码迷,mamicode.com
首页 > 数据库 > 详细

sql优化

时间:2019-11-25 11:35:27      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:rom   应该   sele   href   就是   建议   提升   命中   ref   

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优化

标签:rom   应该   sele   href   就是   建议   提升   命中   ref   

原文地址:https://www.cnblogs.com/jasonboren/p/11926199.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!