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

Die Einhandregel von WEB 2.0

<br />Mein vorheriger Artikel über CSS wurde...

JavaScript-Implementierung eines Karussellbeispiels

In diesem Artikel wird der spezifische Code für J...

Fehlereinfügungsanalyse der Funktion „updatexml()“ von MySQL

Verstehen Sie zunächst die Funktion updatexml() U...

Div adaptive Höhe füllt automatisch die verbleibende Höhe

Szenario 1: HTML: <div Klasse="äußere&quo...

Implementierung eines Docker-Compose-Bereitstellungsprojekts basierend auf MySQL8

1. Erstellen Sie zunächst den entsprechenden Ordn...

So überprüfen Sie die Speichernutzung unter Linux

Bei der Behebung von Systemproblemen, Anwendungsv...

Wissen Sie, warum Vue-Daten eine Funktion sind?

Erklärung auf der offiziellen Website: Wenn eine ...

JavaScript zum Implementieren der Auswahl oder Stornierung von Kontrollkästchen

In diesem Artikel wird der spezifische JavaScript...