• 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]。
    如相关博文涉及到版权问题,请联系本人。
  • 相关阅读:
    15 Django组件-中间件
    Android学习笔记-Dialog详解
    python爬取世界疫情信息到Mysql
    《构建之法》阅读笔记3
    团队项目--校园百晓生
    团队项目--校园百晓生
    php安装配置及问题解决
    《构建之法》阅读笔记2
    云服务器配置(转载)
    第五周总结
  • 原文地址:https://www.cnblogs.com/jingLongJun/p/4491088.html
Copyright © 2020-2023  润新知