Heim > Datenbank > MySQL-Tutorial > Warum unterscheidet sich die Zeilenanzahl von „explain selected *' von „count()'?

Warum unterscheidet sich die Zeilenanzahl von „explain selected *' von „count()'?

Susan Sarandon
Freigeben: 2024-11-07 02:42:02
Original
608 Leute haben es durchsucht

Why Does

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 | 
+----+-------------+---------+-
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage