• sql 语句的优化


     

      sql语句的优化:在大多数情况下,为了更快的遍历表结构,优化器主要是根据定义的索引来提高性能。但是在不合理的SQL语句中,优化器会删去索引进而使用全表扫描,

             一般而言,这种sql被称为劣质sql,所以我们在编写的过程中,要注意哪种类型的sql会导致优化器失去作用。

      一、操作符的优化

        1. IN 操作符 或者not in(IN => exists [])

         (

            使用in写出的sql语句比较容易以及清晰易懂,但是效率比较低,Oracle查询的过程中,一般会试图将其转化成多个表的连接,

            如果转化不成功则先执行in里面的子查询,再查询外层的表查询,由此可见在使用in的sql至少多了一个转化的过程。在业务密集

            的sql中,尽量使用exists 代替in。exists一般后面是查询语句。not in ,not exists

          )

        2. is null 或者 is not null 操作符(用替代法进行代替,如改为a > 0或者a > '')

          (

            判断字符为空一般是不用索引的,不能用null作为索引,所有不推荐使用上面的方式。

          )

        3. > < 操作符之间的区别,尽量使用>=或者<=

          (

            之间的区别是:比如 a>2 时,会先执行a = 2时的数据索引,而携程 a >=3 就是找=3的索引

          )

        4.like 操作符推荐使用'abc%'。

          (

            使用‘%abc%’ 是不会引用索引的。而使用‘abc%’是能够引用索引的。

          )

        5.操作符union ,使用union all 进行替换。

          (

            因为union 是会对结果进行排序的。

          )

        6.采用连接符,也会索引也会失去作用。

        7.order by 的使用,当order by 的字段在where 语句中,是不会出现排序操作的,所以尽量使用这个方法。

       

      二、sql书写的影响

        1. 一般来说,查询条件数量的多的条件都放在后面。

        2.不要再条件的列的上面进行运算。

        3.使用union all 代替or 一般用于索引列。

        4.使用in 来替换or。

        5.使用order by 通常在这之间,要将不必要的数据过滤掉。

      

     

  • 相关阅读:
    find命令之xargs
    find命令之exec
    find 命令概览
    mv命令
    locate 命令
    whereis 命令
    linux which 查看可执行文件的位置
    Linux应用总结:自动删除n天前日志
    Visual Studio
    Visual Studio- “无法启动此程序,因为计算机中丢失 xxx.dll尝试重新安装该程序以解决此问题"
  • 原文地址:https://www.cnblogs.com/chengyangyang/p/9777877.html
Copyright © 2020-2023  润新知