SQL语句的优化

  • 避免使用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来替换。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值