没有高并发,亿万级数据优化的基础sql一

   各位童鞋大家好,小编是个普通的多年程序员。在这很开心能够结识大家。正在做技术的或者正想加入这个行业的童鞋们肯定有时间的时候都在不断学习,提高自己。
学习过程中,免不了各种渠道找资源。相信童鞋们找的资源绝大多数都是‘高,大,上’的,什么高并发,高可用,分布式,千万级数据,亿级数据优化等等。能够接触并学到这些精髓固然很好。
但是,这些真的很适合你么。或者说目前你真的迫切需要这些么?今天,小编结合自己多年的实战工作经验,来给大家分享些基础性质的知识吧。首先一篇,我以咱们常用的数据库sql语句来开篇吧。
   目前,企业用的多的还是oracle,mysql. 下面sql语句以oracle为例子.
   先来几个大家都会的语句
 
   select * from mytable ;
   delete from mytable mt where mt.created_time <= sysdate -7 ;
   update mytable set name = 'zhang' where id = 2;
   select seq_mytable.nextval from dual;

   上面语句都是基础知识,接触过数据库的童鞋肯定都很熟悉。从上面语句中是否能够隐约看到表的轮廓呢!肯定童鞋们也都知道,一个表有这么几个字段是不可少的:ID,created_time, modify_time.
任何线上的数据表都带上这3个字段吧,这可是很多厂家建表规则之一哦。否则,dba审核会不通过。
   为什么要加上那三个字段呢,主键ID,大家肯定都知道其重要作用,一般都是通过seq 生成。生成seq时候,如果业务没有排序要求,尽量生成不排序seq哦,这样在数据量大的时候可以提高不少的效率。
   创建序列sql:
    create sequence seq_mytable
    minvalue 1
    maxvalue 9999999999
    start with 1
    increment by 1
    cache 1000
    noorder;    ----加上它,查询的seq就是乱序了
   这样id 都唯一了。把ID做为主键,查询表记录就方便多了。
   created_time,创建时间。加上这个字段,就可以明确知道数据的创建时间,这样就可以根据它来按时间查询,修改,删除数据记录了。当数据量很大的时候,通过它来分区,也是个很好的方案。比如业务要求
   只保留历史7天数据,就可以通过例子2语句即可完成。
   modify_time,修改时间。每次修改了数据,都变更下 modify_time。好处也特别的多。比如日志查询,这个作用可是巨大的。
   既然讲的都是sql,开篇文章不可少insert语句。

    MERGE INTO my_table mt
     USING (SELECT id as id FROM dual) d2
     ON (mt.id = d2.id)
     /*WHEN MATCHED THEN
       UPDATE SET mt.name = 'myname', mt.age = 22*/
     WHEN NOT MATCHED THEN
   INSERT
     (id, name, age, mydife_time, created_time)
   VALUES
     ('seq', 'myname', 19, sysdate, sysdate);
这个insert语句,功能也很强大。使用场景也很多。下一篇在通过它来继续咱们基础的sql之旅吧!
(不急,很快的)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangzewu1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值