在索引上覆盖SELECT给出了使用where;使用索引;而不是仅使用索引;

时间:2015-10-16 21:28:57

标签: mysql optimization indexing innodb b-tree

查询:

SELECT A from table_name where A = 'a';

解释输出

1   SIMPLE  table_name  ref A_idx   A_idx   1   const   40582635    **Using where; Using index**

问题

我有一个综合索引A_idx on (A,B,C)...

我希望输出只能使用索引,因为索引涵盖了整个查询。但我仍然得到一个使用的地方;使用索引 ...

有问题的列是具有以下定义的ENUM。

A enum('a','b','c') COLLATE utf8_unicode_ci NOT NULL,

1 个答案:

答案 0 :(得分:1)

explain output documentation的相应部分所述,“即使您正在为WHERE子句的所有部分使用索引,您也可以看到如果列可以为NULL,请使用where。”

更新:文档还说“如果Extra列也说使用where [除了使用索引],这意味着索引用于执行键值的查找。”