8

「million_words」という単純なテーブルがあります。2 つの列を持つ 1 つの行があります -> 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 句が常に false であることを認識します。参照this


テーブルには最大で 1 つの一致する行があり、クエリの開始時に読み取られます。行が 1 つしかないため、この行の列の値は、オプティマイザの残りの部分で定数と見なすことができます。const テーブルは一度だけ読み取られるため、非常に高速です。

PRIMARY KEYconst は、またはのすべての部分UNIQUE indexを定数値と比較するときに使用されます。参照this

于 2013-02-19T09:11:55.160 に答える