MySQL-Optimierungszusammenfassung – Gesamtzahl der Abfrageeinträge

MySQL-Optimierungszusammenfassung – Gesamtzahl der Abfrageeinträge

1. COUNT(*) und COUNT(COL)

COUNT(*) führt normalerweise einen Indexscan auf dem Primärschlüssel durch, was bei COUNT(COL) jedoch nicht unbedingt der Fall ist. Darüber hinaus zählt ersteres die Gesamtzahl aller übereinstimmenden Datensätze in der statistischen Tabelle, während letzteres die Anzahl aller übereinstimmenden COL-Datensätze in der Berechnungstabelle zählt. Es gibt Unterschiede.
Optimierungszusammenfassung für MyISAM-Tabellen:

1. SELECT COUNT(*) FROM tablename ist in jedem Fall die beste Wahl;

2. Versuchen Sie, Abfragen wie SELECT COUNT(*) FROMtablename WHERE COL = 'value'; zu reduzieren.

3. Verhindern Sie das Auftreten von SELECT COUNT(COL) FROM tablename WHERE COL2 ='value'.

2. COUNT(*) oder COUNT(id)

Meinem Verständnis nach sollte es schneller sein, COUNT(id) zu verwenden, denn wenn meine ID ein automatisch inkrementierender Primärschlüssel ist, verbraucht die Berechnung ihrer Nummer offensichtlich weniger Ressourcen als die Berechnung der Anzahl aller Felder. Ich habe jedoch mehrere ähnliche Artikel zum Beschleunigen von MySQL-Abfragen gesehen, in denen empfohlen wird, SELECT COUNT(*) zu verwenden, anstatt den Primärschlüssel direkt zu zählen. Warum ist das so?

Dies liegt anscheinend daran, dass die Tabelle, die die MyISAM-Engine verwendet, die Gesamtzahl der Einträge speichert. Wenn kein WHERE vorhanden ist oder das WHERE immer wahr ist (z. B. WHERE 1), kann COUNT (*) direkt die Gesamtzahl der Einträge zurückgeben.

Darüber hinaus ist es offensichtlich, dass COUNT(*) nicht „alle Felder berechnen“ bedeutet. MySQL interpretiert * offensichtlich als „ein Datenelement“.

Testdaten, einfacher Vergleich, keine weiteren Tests:

#0.817-Abfragezeit für eine Million Datensätze, select count(*) from student;
#0,789 – Abfragezeit für eine Million Datensätze, select count(id) from student;
#1.011-Abfragezeit für eine Million Datensätze, select count(name) from student;
#1.162-Abfragezeit für eine Million DatensätzeSELECT COUNT(*) FROM student WHERE namelike '%xiaoli%';#Standardmäßig wird der Primärschlüsselindex für die Abfrage verwendet, aber der Index wird ungültig, nachdem die Like-Bedingung hinzugefügt wurde

Zusammenfassen

Im Allgemeinen ist die Verwendung von COUNT(id) schneller. Hier ist ein einfacher Vergleich zu Ihrer Information.

Das Obige ist der gesamte Inhalt dieses Artikels zur MySQL-Optimierungszusammenfassung – Gesamtzahl der Abfragen. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können sich auf Folgendes beziehen: MySQL-Optimierung mit Verknüpfungen anstelle von Unterabfragen, Beispielanalyse der Optimierung von MySQL-Unterabfragen und verschachtelten Abfragen, Beispiele für Fähigkeiten zur Optimierung der Effizienz von MySQL-Unterabfragen in Anweisungen usw. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank, Freunde, für die Unterstützung dieser Site!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der MySQL-Konfigurationsparameteroptimierung
  • MySQL fragt den aktuellsten Datensatz der SQL-Anweisung ab (Optimierung)
  • Detaillierte Erläuterung von 30 SQL-Abfrageoptimierungstechniken für MySQL-Zehnmillionen großer Datenmengen
  • Mysql-Optimierungstechniken zum Abfragen von Daten basierend auf der Zeit
  • 10 SQL-Anweisungsoptimierungstechniken zur Verbesserung der MySQL-Abfrageeffizienz
  • MySQL-Lösung zur Datenpaging-Abfrageoptimierung auf Millionenebene
  • Optimierung der Leistung von Paging-Abfragen für MySQL mit mehreren zehn Millionen Daten
  • MySQL-Entwicklungsleistungsforschung: Optimierungsmethode zum Batch-Einfügen von Daten
  • Zusammenfassung der zehn Prinzipien zur Optimierung grundlegender Anweisungen in MySQL
  • MySQL-Optimierungsstrategie (empfohlen)

<<:  js implementiert einen einzigen Klick zum Ändern der Tabelle

>>:  So erstellen Sie eine PHP+Nginx+Swoole+MySQL+Redis-Umgebung mit Docker

Artikel empfehlen

Zwei Möglichkeiten, die CSS-Priorität zu verstehen

Methode 1: Werte hinzufügen Gehen wir zu MDN, um ...

Lösung für das Problem der MySQL-Transaktionsparallelität

Ich bin während der Entwicklung auf ein solches P...

Erfahren Sie mehr über das V-Modell und seine Modifikatoren in einem Artikel

Inhaltsverzeichnis Vorwort Modifikatoren des V-Mo...

Das Docker-Maven-Plugin-Plugin kann das entsprechende JAR-Paket nicht abrufen

Bei Verwendung des Plug-Ins „Docker-Maven-Plugin“...

Vue CodeMirror realisiert den Effekt des Online-Code-Compilers

Vorwort Wenn wir den Effekt der Online-Codekompil...

Ein einfaches Beispiel für die Verwendung von Vue3-Routing VueRouter4

Routenplanung vue-router4 behält den Großteil der...

Einführung in die neuen Funktionen von MySQL 8.0.11

MySQL 8.0 für Windows v8.0.11 offizielle kostenlo...

WeChat-Applet implementiert Puzzlespiel

In diesem Artikel finden Sie den spezifischen Cod...

Detaillierte Erläuterung des CocosCreator-Nachrichtenverteilungsmechanismus

Überblick Dieser Artikel beginnt mit der Einführu...

Zusammenfassung der Standardverwendung von HTML-, CSS- und JS-Kommentaren

Das Hinzufügen der erforderlichen Kommentare ist ...

Einführung in MySQL-Rollenfunktionen

Inhaltsverzeichnis Vorwort: 1. Einführung in die ...

JS + Canvas realisiert dynamischen Uhreffekt

Eine auf Canvas basierende Demo einer dynamischen...

So bereinigen Sie den MySQL-Speicherplatz in der Alibaba Cloud

Heute habe ich von Alibaba Cloud eine Festplatten...