SQL语句优化(来自十年经验架构师的课堂)

昨天分享了数据库设计优化,今天来分享一下更有用的SQL语句优化。

1. 使用慢日志,explain记录那些查询很慢的SQL语句。

2. 避免全表扫描,考虑在WHERE和ORDER BY中使用到的列建立索引

3. 尽量避免在WHERE子句中使用NULL值判断,这样会使DBMS放弃使用索引进行全表扫描,可以设计不影响业务的默认值.

4. 尽量避免在WHERE子句中使用  !=  或<>,也会导致DBMS放弃使用索引进行全表扫描,可以使用<,<=,=,>=,between in。

5. 尽量避免在WHERE子句中使用OR来连接,会导致放弃使用索引。可以使用UNION ALL,将查询的记录合并。

6. 能用between实现就不要使用in

7. LIKE避免使用%%查询,不会使用索引查询。xxx%会使用索引。

8. 查询时尽量不要使用*作为结果列,仅列出需要查询的字段,节省应用服务器的内存。因为查询到的列都保存在程序的内存中。

9. 在WHERE中,尽量避免做列运算和函数,会走索引而不是全表扫描。

10. JOIN操作中,使用小的结果驱动大的结果。

11. 分页在基数较大时,尽量使用between而不是limit

12. 尽量不要使用rand获取随机条数记录

13.count(列名)表示多少个不为NULL的记录(不完整),使用COUNT(*,1)整个结果集有多少条记录

14. 尽量不要做无谓的排序操作

15. 出现了局部变量时,可以强制使用索引  with(index(索引名))

16. 尽量避免对字段使用表达式操作,如WHERE NUM/2=100,替换成NUM=100*2

17. 尽量用EXISTS代替IN


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值