面试者与面试官

1、MySQL索引的最左前缀原则是什么意思?如果有查询条件为 a > 1 and b = 1 and c = 1,请问这个查询能命中MySQL索引吗?

索引的最左前缀原则是指查询语句要使用索引的条件需要满足从关联索引的最左侧开始且需要连续匹配。

比如,如果创建联合索引的顺序是(a, b, c)则上面的查询条件就可以命中索引,但如果创建y索引的顺序是(b,a, c)或者其他顺序,则上面的查询语句则无法使用索引。

2、使用explain工具分析慢查询的时候需要关注哪些信息?

首先关注“type”项,如改项显示为“ALL”则意味着查询使用了全标扫描,这是最差的情况,必须进行优化。如果改项的值为“index”或“range”等则相对较好。

还要注意“row”这项,它代表预计扫描的行数,如果改值较大,即使查询使用到了索引也需要进行优化。

此外,“possible_keys”和“key”这两项也非常重要,前者表示可能使用到的索引,后者表示查询实际使用的索引。如果改项值为空则意味着未使用索引,需要立即优化。