mysql索引
mysql 最左匹配原则理解
mysql 最左匹配原则跟where条件顺序有没有关系呢?
经过验证,没有关系,只要where条件中的字段能跟索引字段匹配,且满足最左匹配原则就可以使用索引
接下来我们通过实际的案例来进行说明
建表语句
1 | CREATE TABLE `test_index` ( |
索引分析
执行如下的sql,查看执行结果
1 | # 第一个sql |
第一个sql执行结果
第二个sql执行结果
可以看到两个sql执行结果分析是一致的,也就是where条件字段不影响索引的使用
我们去掉sql中的b条件,再次执行sql
1 | explain SELECT * from test_index t where t.a= 1; |
执行结果如下:
此时我们可以看到,我们的索引失效了,进行了全表查询
explain 字段说明
rows
表示扫描了多少行
extra
Using fileSort
告诉我们,mysql进行了排序操作。
如果我们手动进行了排序,即使用了order by. 我们可以通过把排序字段作为索引字段,来避免出现filesort
发现使用group进行分组的时候,也可能会导致使用filesort
Using where
使用了where条件
Using temporary
表示使用了临时表