Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum verwendet diese Abfrage where anstelle von index?

Die Ausgabe von EXPLAIN kann manchmal irreführend sein.

Zum Beispiel filesort hat nichts mit Dateien zu tun, using where bedeutet nicht, dass Sie ein WHERE verwenden -Klausel und using index kann auf den Tabellen erscheinen, ohne dass ein einziger Index definiert ist.

Using where bedeutet nur, dass es eine einschränkende Klausel in der Tabelle gibt (WHERE oder ON ), und es werden nicht alle Datensätze zurückgegeben. Beachten Sie, dass LIMIT zählt nicht als einschränkende Klausel (obwohl es eine sein kann).

Using index bedeutet, dass alle Informationen aus dem Index zurückgegeben werden, ohne die Datensätze in der Tabelle zu suchen. Dies ist nur möglich, wenn alle von der Abfrage benötigten Felder vom Index abgedeckt werden.

Da Sie * auswählen , das ist unmöglich. Andere Felder als category_id , board_id , display und order sind nicht im Index enthalten und sollten nachgeschlagen werden.