由于前期的快速开发、敏捷版本迭代,接口响应速度是每一个系统发展到中后期都会面临的一个问题。本系列从实战出发手把手一起对接口响应慢问题做优化。
对于慢查询我们一般通过如下思路解决:
1. explain sql 分析慢SQL
2. 利用缓存
3. 读写分离和分库分表
4. 评论区补充,待续…
本篇是系列文章(以 MySQL 为例),从多个角度分析、解决慢查询。
前图
为了提高查询效率,当数据库表加完索引后还不不能满足性能需求,第二步,SQL 语句优化。
系统前期开发阶段,为了快速开发,SQL 语句都是以实现功能为主,性能上可能没怎么在意。本篇主要讲述几个在实战中
注意优化的性能点供大家参考。
文章结构由简到难,以目录为结论,下文做详细讲解。
目录:
-
1. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
-
2. 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
-
3. 应尽
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
-
4. in 和 not in 也要慎用,否则会导致全表扫描,如:
-
5. 下面的查询也将导致全表扫描:
-
6. 应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
-
7. 应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:
-
8. 不要在 where 子句中的