Zeilenlimit für MySQL Explain
Unten ist meine Abfrage, um 20 Zeilen mit genre_id 1 zu erhalten.
EXPLAIN SELECT * FROM (`content`)
WHERE `genre_id` = '1'
AND `category` = 1
LIMIT 20
Ich habe insgesamt 654 Zeilen in der Inhaltstabelle mit genre_id 1, ich habe einen Index für genre_id und in der obigen Abfrage beschränke ich das Ergebnis auf die Anzeige von nur 20 Datensätzen, was gut funktioniert, erkläre aber, dass 654 Datensätze unter Zeilen angezeigt werden. Ich habe versucht, einen Index für Kategorie hinzuzufügen aber immer noch das gleiche Ergebnis und dann habe ich auch AND category = 1 entfernt, aber die gleichen Zeilen zählen:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE content ref genre_id genre_id 4 const 654 Using where
HIER Ich habe die Antwort gefunden
LIMIT wird bei der Schätzung der Zeilenanzahl nicht berücksichtigt. Auch wenn Sie LIMIT verwenden, das die Anzahl der zu untersuchenden Zeilen einschränkt, gibt MySQL weiterhin die vollständige Anzahl aus
Aber auch in Kommentaren wurde eine andere Antwort gepostet:
LIMIT wird jetzt bei der Schätzung der Zeilenanzahl berücksichtigt. Ich bin nicht sicher, welche Version dies ansprach, aber in 5.1.30 berücksichtigt EXPLAIN LIMIT genau.
Ich verwende MySQL 5.5.16 mit InnoDB. so wie oben erwähnt, wird es immer noch nicht berücksichtigt. Meine Frage ist also, ob MySQL alle 654 Zeilen durchläuft, um 20 Zeilen zurückzugeben, auch wenn ich ein Limit festgelegt habe. Vielen Dank