- • Using index:覆盖索引免回表 —— 绿灯
- • Using index condition:索引条件下推 —— 可接受
- • Using where:逐行过滤 —— 结合 rows/filtered 评估
- • Using join buffer:连接列缺索引 —— 红灯,去建索引
- • Using filesort / temporary:磁盘排序 / 临时表 —— 红灯
- • order by 索引列:直接按索引顺序读取,无排序动作
- • order by 无索引列:数据落临时磁盘文件再排序,极慢
- • group by / distinct / union:能用索引就用索引
- • 用不上索引 → 全部进临时表,大量磁盘操作
- • 调优口诀:让排序、分组、去重的列都有索引可依
- • SQL 调优 = 看懂执行计划 + 针对性改造
- • 索引设计只是 SQL 优化的入门技巧之一
- • 复杂 SQL 调优必须理解底层:数据页 / 索引树 / 回表
- • 目标状态:执行计划每一步都基于索引执行
- • 日常实践:SQL 尽量简单 + 建好必要索引,性能通常就不是问题