Ich habe eine einfache Tabelle namens "million_words". Es hat eine Zeile mit zwei Spalten - & gt; ID INT UNSIGNED NICHT NULL AUTO_INCREMENT PRIMARY KEY & amp; Wort VARCHAR (50 NICHT NULL.
Ich führe diese Abfrage -: EXPLAIN SELECT * FROM million_words WHERE word = '-anon'
Die Spalte Extra
druckt dann: 'Impossible WHERE noticed after reading const tables
, obwohl die Zeile eindeutig in der Tabelle vorhanden ist.
Was ist wronf
?Aus der MySQL-Dokumentation :
" Impossible WHERE bemerkt nach dem Lesen von const Tabellen ":
MySQL hat alle Const- (und System-) Tabellen gelesen und bemerkt, dass die WHERE-Klausel immer falsch ist. Siehe this
Die Tabelle hat höchstens eine übereinstimmende Zeile, die am Anfang der Abfrage gelesen wird. Da es nur eine Zeile gibt, können Werte aus der Spalte in dieser Zeile vom Rest des Optimierers als Konstanten angesehen werden . const-Tabellen sind sehr schnell, weil sie nur einmal gelesen werden.
const wird verwendet, wenn Sie alle Teile eines PRIMARY KEY
oder UNIQUE index
mit konstanten Werten vergleichen. Siehe this