Welcome 微信登录

首页 / 数据库 / MySQL / Oracle索引 主键影响查询速度

要提高查询速度,一般:1.不需要删除的字段,建主键;有可能要被删除的字段,建索引。2.假如一次提交5W个号码,每个都要和数据库里90W号码进行比较5W个号码中哪些号码是90W号码中的。那么将90W号码建一个表,一个字段就是号码字段,然后把该字段设为主键即可。update前100条为0,另外一个程序找状态为0的,要提高速度,要将这100条(所有条)的ID建索引。3.不管对什么字段建的什么索引,该字段只有放在where条件中使用时,索引才生效,假如放到not in或者其他条件中,索引无效。 另外,有个语句:
  1. select t1.code,t1.id,t1.content,t1.clid,wg.fnumber,t1.mlevel   
  2. from (select * from t_busi_pre_mx mx  
  3. where <span style="color:#ff0000;">mx.mainid="000" and mx.sjtdid="00" </span>and mx.stus="1" and mx.stype="1" ) t1  
  4. left join T_CL_TD td   
  5. on t1.sjtdid=td.tdid   
  6. left join T_CON_WG wg   
  7. on td.wgid=wg.wgid   
  8. where rownum<=wg.fnumber order by mlevel  
对于sql中红色字体:(mainid和sjtdid在这里的都是唯一的,但是在表中不一样,不知道怎么说,只想说where后的条件顺序不一样,速度不一样,对某些字段加索引,速度更快)情况1.(此时mianid未建索引)
  1. where sjtdid="00" and mainid="000"                     耗时900ms  
情况2.(此时mianid未建索引)
  1. where mainid="000" and sjtdid="00"                     耗时450ms,快了1倍  
情况3.(对mainid建索引,mianid是另外一个表的id)
  1. create index t_busi_pre_mx_idx on t_busi_pre_mx (mainid);  
 
  1. where mainid="000" and sjtdid="00"     耗时33ms,相对情况1,快了30倍  
4.Oracle序列,类似sqlserver自增主键,是数字类型的。使用序列也可以加快查询速度。---建序列:CREATE SEQUENCE seq_mxid
    INCREMENT BY 1 -- 每次加几个
    START WITH 1    -- 从1开始计数
    NOMAXVALUE      -- 不设置最大值
    NOCYCLE         -- 一直累加,不循环
; ---使用序列
  1. insert into table(id) values(<span style="color:#6633ff;">seq_mxid.nextval; 
编辑Oracle Clob数据类型的值关于Oracle的rownum相关资讯      Oracle数据库  Oracle入门教程  oracle数据库教程 
  • Oracle数据库全球化  (03月01日)
  • Oracle数据库日期过滤方法性能比较  (02/02/2015 13:20:26)
  • Oracle数据库安装中端口被占用问题  (10/29/2014 07:42:24)
  • 在CentOS 6.6上搭建C++运行环境并  (10/10/2015 19:44:40)
  • Oracle数据库无法使用localhost和  (11/14/2014 16:39:10)
  • 使用SQLT来构建Oracle测试用例  (08/28/2014 06:17:41)
本文评论 查看全部评论 (0)
表情: 姓名: 字数