Ich habe eine Tabelle mit einem Feld "aktiv". Aktiv ist ein indexiertes tinyint (4), enthält aber nur einen Wert von 1 oder 0. Ich weiß ... kein tolles Design, aber ich habe dieses System geerbt, um es zu erhalten.MySQL Integer Vergleichsgeschwindigkeit (= vs <>)
Wenn es hilft, hat diese Tabelle 175277 Datensätze.
Wenn ich laufen:
SELECT * FROM table WHERE active = 1;
es 0,497 Sekunden dauert.
aber wenn ich
SELECT * FROM table WHERE active <> 0;
laufe (aktiv muss gleich 1 Ursache den einzig möglichen anderen Wert das ist.)
Es dauert nur 0,095 Sekunden.
Ich habe einige Abfrage Optimierung getan und bemerkte dies und fragte mich warum?
Wie weiß die Datenbank, dass es entweder das eine oder das andere? Also die beiden Aussagen sind nicht das gleiche –
Überprüfen Sie die 'EXPLAIN' – zerkms
' EXPLAIN' beantwortet es. Der Motor entschied sich für einen anderen Schlüssel. Vielen Dank! –