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优化的主要内容,如果未能解决你的问题,请参考以下文章

SQL 优化

项目中优化sql语句执行效率的方法是啥?

SQL优化之语句优化

数据库优化篇—— SQL语句优化建议

基于MySQL 的 SQL 优化总结

【DB2】SQL优化