SQL语句的优化

来源:互联网 发布:a加b的逆矩阵等于什么 编辑:程序博客网 时间:2024/05/23 07:24
  • 避免使用OR操作

WHERE从句中条件包含OR操作那么SQL语句将不使用索引,可以使用IN运算符来替换,或是通过UNION连接两条SELECT语句。

 

  • 避免UNION运算符的不必要使用

 

对同一张表的两次相邻扫描。

 

  • 避免使用NOT运算符

 

WHERE从句中条件包含NOT运算符,那么SQL语句将不使用索引,可以通过比较运算符来代替。

  • 隔离条件中的列

 

WHERE从句中条件等号两边相匹配:

 

SELECT *

FROM PLAYERS

WHERE JOINED + 10 =1990=>WHERE JOINED = 1980

  • 使用BETWEEN运算符

 

通过AND运算符查看某个特殊范围值的WHERE从句一般不会使用索引,换成BETWEEN。

  • 避免LIKE运算符的特殊形式

 

在LIKE行上的索引不被考虑。

  • 向连接添加冗余条件

 

SELECT PAYMENTNO, NAME

FROM PENALTIES AS PEN, PLAYERS AS P

WHERE PEN.PLAYERNO = P.PLAYERNO

AND PEN.PLAYERNO = 44

 

添加

AND P.PLAYERNO = 44

  • 避免HAVING从句

尽可能在WHERE语句中指定条件而不是在HAVING子句中,不能用索引。

  • 尽可能使SELECT从句小一些

如果子查询使用EXIST运算符链接到了主查询,但是该SELECT语句的最终结果不受制定表达式的影响,重新表述SELECT从句中由常量组成的唯一表达式。

  • 避免DISTINCT
  • 使用集合运算符的ALL选项
  • 使用外连接而不是UNION运算符
  • 避免数据类型转换最后指定最大的表
  • 避免ANY和ALL运算符

使用聚合函数MIN,MAX来替换。

 

 

原创粉丝点击