1、原题
1.1、英文原题
1.2、答案
C
2、题目解析
2.1、题干解析
本题考察的是MySQL执行计划中type字段的值的含义。
2.2、选项解析
由于type值为range表示基于索引的范围查询,所以选项C正确。
3、知识点
3.1、知识点1:执行计划的输出格式
-
执行计划为SELECT语句中使用的每个表返回一行信息。它在输出中按照MySQL在处理语句时读取它们的顺序列出表。对于执行计划的输出字段,解释如下(由于执行计划也可以提供JSON格式,因此如下表格第一列是一般情况下的字段名,第二列是JSON格式下的字段名):
-
select_type字段的可选值说明如下:
-
type(连接类型字段)的可选值说明如下,以下值对于查询性能来说从最佳到最差依次向下排列:
-
Extra列说明如下。注意Extra列出现Using filesort和Using temporary时,查询效率会有问题:
4、总结
- 执行计划中的type字段代表连接类型,最好的是SYSTEM和CONST(一般是用常量基于主键或唯一索引进行过滤),一般出现eq_ref也比较好(一般也是基于主键或唯一索引进行过滤)。出现ref表示是索引的最左匹配或者是没有用到唯一索引。再往下依次是fulltext、ref_or_null、index_merge、unique_subquery、index_subquery、range、index、all。可以看到有没有用到主键或唯一索引,是影响查询性能的关键。