Abweichung in der Zeilenanzahl zwischen „count()“ und „explain selected *““
Der Befehl „explain selected *“ in MySQL liefert eine Schätzung der während einer Abfrage verarbeiteten Zeilen. Diese Schätzung kann jedoch von der tatsächlichen Zeilenanzahl abweichen, die mit der Funktion „count()“ ermittelt wurde.
Erklärung
Die Anweisung „explain selected *“ zeigt Informationen darüber an, wie MySQL eine Abfrage ausführt. Zu den bereitgestellten Details gehört eine Schätzung der Anzahl der Zeilen, die von der Abfrage gescannt werden.
Diese Statistiken sind jedoch möglicherweise nicht immer genau. Faktoren wie Datenverteilung, Tabellenstruktur und Abfragekontext können die Genauigkeit der Schätzung daher möglicherweise nicht beeinflussen stimmt mit der tatsächlichen Zeilenanzahl überein, die von der Abfrage verarbeitet wird.
Beispiel
Betrachten Sie das folgende Beispiel:
mysql> select count(*) from table where relation_title='xxxxxxxxx'; +----------+ | count(*) | +----------+ | 1291958 | +----------+ mysql> explain select * from table where relation_title='xxxxxxxxx'; +----+-------------+---------+- | id | select_type | rows | +----+-------------+---------+- | 1 | SIMPLE | 1274785 | +----+-------------+---------+-
Wie beobachtet, wurde „explain ausgewählt *“-Anweisung schätzt, dass 1.274.785 Zeilen gescannt werden, um die Daten abzurufen. Die Funktion „count()“ gibt jedoch eine tatsächliche Anzahl von 1.291.958 Zeilen zurück.
Auswirkungen
Die Diskrepanz zwischen den Zeilenanzahlen kann Benutzer zu der falschen Annahme verleiten, dass es sich um einen Index handelt wird zur Optimierung der Abfrage verwendet. Dies ist jedoch möglicherweise nicht der Fall und die Abfrage scannt möglicherweise immer noch eine beträchtliche Anzahl von Zeilen.
Fazit
Während „explain selected *“ wertvolle Informationen liefert Informationen zur Abfrageausführung sollten nicht als genaues Maß für die tatsächliche Zeilenanzahl verwendet werden, die von einer Abfrage verarbeitet wird. Um eine genaue Zählung der übereinstimmenden Zeilen zu erhalten, sollte die Funktion „count()“ verwendet werden.
Das obige ist der detaillierte Inhalt vonWarum unterscheidet sich die Zeilenanzahl von „explain selected *“ von „count()“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!