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

Warum sind die Zeilen, die von EXPLAIN zurückgegeben werden, nicht gleich count()?

Es zeigt an, wie viele Zeilen es durchlaufen hat, um Ihr Ergebnis zu erhalten.

Der Grund für die falschen Daten ist, dass EXPLAIN nicht genau ist, es macht Vermutungen über Ihre Daten basierend auf Informationen, die über Ihre Tabelle gespeichert sind.

Dies ist eine sehr nützliche Information, wenn Sie beispielsweise JOINS für viele Tabellen ausführen und sicher sein möchten, dass Sie nicht für jede Zeile, die Sie haben, die gesamte verknüpfte Tabelle für eine Informationszeile durchgehen.

Hier ist ein Test für eine Tabelle mit 608 Zeilen.

SELECT COUNT(id) FROM table WHERE user_id = 1

Ergebnis:

COUNT(id)
512

Und hier ist die Erklärung

EXPLAIN SELECT COUNT(id) FROM table WHERE user_id = 1

Ergebnis:

id  rows
1   608