8

我有一个名为“million_words”的简单表格。它有一行两列-> id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY & word VARCHAR(50 NOT NULL.

我运行此查询-:EXPLAIN SELECT * FROM million_words WHERE word = '-anon'

Extra列然后打印 : 'Impossible WHERE noticed after reading const tables,即使该行清楚地存在于表中。

怎么了

4

1 回答 1

14

来自 MySQL 文档

在读取 const 表后注意到不可能的 WHERE ”:
MySQL 已读取所有 const(和系统)表,并注意到 WHERE 子句始终为假。参考this


该表最多有一个匹配行,在查询开始时读取。因为只有一行,所以这一行中列的值可以被优化器的其余部分视为常量。const 表非常快,因为它们只被读取一次。

PRIMARY KEY将 a或的所有部分UNIQUE index与常量值进行比较时使用 const。参考this

于 2013-02-19T09:11:55.160 回答