sql优化
Posted jasonboren
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql优化相关的知识,希望对你有一定的参考价值。
1.负向条件查询不能使用索引
也就是不等于之类的负向条件,可以优化为in查询
记住, 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中。
2.前导模糊查询不能使用索引,将进行全表扫描,非前导模糊查询则可以使用索引
例如:select * from student where name like ‘%j‘;
应该优化为:select * from student where name like ‘j%‘;
3.在属性上进行计算不能命中索引
例如:select * from student where YEAR(date)< = ‘2017‘;
可以优化为:select * from student where date < = ‘2017-01-01‘;
4.如果明确知道只有一条结果返回,limit 1能够提高效率
你知道只有一条结果,但数据库并不知道,明确告诉它,让它主动停止游标移动
5.善用别名,这样看起来不仅逻辑清晰,而且也能减少由列引起的解析歧义的问题。
6.Select * 一般都会造成全表扫描,显示所有列,select 需要的字段即可。
7.经常出现在where子句后面的列可以考虑创建索引来提升查询速度。
8.尽量不要有空判断的语句,因为空判断将导致全表扫描,而不是索引扫描。
对于空判断这种情况,可以考虑对这个列创建数据库默认值。
9.对于连续的数值,能用 between 就不要用 in。
10.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
11.不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。
更多关于sql优化的意见和建议参见:https://www.aliyun.com/citiao/1472264.html
以上是关于sql优化的主要内容,如果未能解决你的问题,请参考以下文章