Extra im EXPLAIN-Druck - 'Unmöglich WHERE nach dem Lesen von const Tabellen bemerkt'

8

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

?     
sanchitkhanna26 19.02.2013, 08:57
quelle

1 Antwort

12

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

    
Bhavik Shah 19.02.2013 09:11
quelle

Tags und Links