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

Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort vergessen?

Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort ve...

Detailliertes Tutorial zur Installation von MySQL 8.0.12 unter Windows

In diesem Artikel finden Sie eine ausführliche An...

So installieren Sie MySQL 5.7.29 mit einem Klick mithilfe eines Shell-Skripts

Dieser Artikel bezieht sich auf die Arbeit des 51...

Schritte für Docker zum Erstellen eines eigenen lokalen Image-Repositorys

1. Umgebung und Vorbereitung 1. Ubuntu 14.04 2.Do...

Einige Details zu MySQL-Indizes

Vor ein paar Tagen stellte mir ein Kollege eine F...

Detaillierte Erklärung des virtuellen DOM und des Diff-Algorithmus in React

Die Rolle des virtuellen DOM Zunächst müssen wir ...

MySQL 8.0.15 Installations- und Konfigurations-Tutorial unter Win10

Was ich kürzlich gelernt habe, beinhaltet Kenntni...

So erstellen Sie schnell eine LAMP-Umgebung auf der CentOS-Plattform

Dieser Artikel beschreibt anhand eines Beispiels,...