zoukankan      html  css  js  c++  java
  • Oracle部分sql优化

    1, 关于not in 和not exists

    一直以来,not in 和not exits应该用哪个一直都在争论,当然专业的人都知道要使用noe exists。

    通过oracle的执行计划可以发现,not in 会跳过索引走全表扫描,而not exists不会这样子。

    2,避免在索引上面使用计算:

    在索引上面使用计算会导致索引失效.

    SELECT … FROM  DEPT  WHERE SAL * 12 > 25000; 
    

    3,使用 >= 代替 >:

    高效:
    
       SELECT *
       FROM EMP
       WHERE DEPTNO >=4
       
       低效:
    
       SELECT *
       FROM EMP
       WHERE DEPTNO >3
    


    4,避免使用<>not操作,

    select * from employee where salary <> 3000; 
    


    select * from employee where salary<3000 or salary>3000; 
    

    第二种允许在salary上使用索引,而第一种不会。

    5,count(*)和count(1)

    一般认为count(1)快于count(*),通过对52万条数据的统计发现,两者实际的执行时间相差无几,只有一次count(1)快于count(*),当然对于索引列的执行永远是最快的。

    6,字符字段的引号。

    如果对于字符字段的索引列不用引号,默认会转型,这样子会导致索引失效。

    7,为什么索引列会快?

    一直使用索引列,但是为什么索引会快?这是因为索引默认与rowid绑定,这样子执行起来肯定会比较快。






    
    欢迎转载,但转载请注明原文链接[博客园: http://www.cnblogs.com/jingLongJun/]
    [CSDN博客:http://blog.csdn.net/mergades]。
    如相关博文涉及到版权问题,请联系本人。
  • 相关阅读:
    【转载】RNA-seq测序方法
    NeuN神经元核抗原
    单细胞测序
    安装cytoscape时的折腾
    linux文件目录
    结合自己做过的数据,对cosmic signature理解
    减数分裂meiosis-有丝分裂miosis-染色体-DNA-等位基因
    AD发生了什么
    FDR的含义
    置换检验—结合GSEA解释
  • 原文地址:https://www.cnblogs.com/jingLongJun/p/4491088.html
Copyright © 2011-2022 走看看