MySql总结
最左前缀法则
错误说法:WHERE子句中过滤条件的出现顺序必须和索引顺序一样。
正确理解:顺序不重要,查询优化器会自动重排条件。真正的规则是,从索引最左列开始,连续使用的列才能走索引。
例:
-- 索引 (a, b, c)
WHERE b = 2 AND a = 1;
三类不走索引典型场景
- 跳过中间列
WHERE a = 1 AND c = 3,只用 a,c失效,跳过了b,索引连续性被破坏 - 左侧用范围
WHERE a > 1 AND b = 2,只用 a,b 失效 a 使用范围后,b 无法参与排序 - 未从最左开始
WHERE b = 2 AND c = 3,不走索引,索引的第一个列 a 没有被引用
explain重点字段
- type
如何查找数据 - key
是否走索引 - rows
预估扫描行数 - filtered
过滤效率,表示存储引擎返回的数据经过 Server 层过滤后,剩余的比例(百分比)
原创
MySql总结
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法