对 SQL 慢查询优化
可能原因
- 分析 SQL 执行计划(explain extended),思考可能的优化点,是否命中索引等
- 没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
- 内存不足
- 是否查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
- 是否返回了不必要的行和列
- 锁或者死锁
- I/O 吞吐量小,形成了瓶颈效应
- sp_lock,sp_who,活动的用户查看,原因是读写竞争资源
优化
- 分析语句,是否加载了不必要的字段/数据。
- 分析 SQL 执行计划(explain extended),思考可能的优化点,是否命中索引等。
- 查看 SQL 涉及的表结构和索引信息。
- 如果 SQL 很复杂,优化 SQL 结构。
- 按照可能的优化点执行表结构变更、增加索引、SQL 改写等操作。
- 查看优化后的执行时间和执行计划。
- 如果表数据量太大,考虑分表。
- 利用缓存,减少查询次数。