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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage