1. Beschreibung Wenn wir in MySQL die Gesamtzahl der Zeilen in einer Tabelle ermitteln müssen, verwenden wir normalerweise die folgende Anweisung Wählen Sie Anzahl(*) aus der Tabelle aus. Tatsächlich können neben * auch andere Parameter in die Zählfunktion eingefügt werden, z. B. Konstanten, Primärschlüssel-IDs und Felder. Was ist also der Unterschied zwischen ihnen? Wie effizient sind sie? Welche Methode sollten wir verwenden, um die Anzahl der Zeilen in der Tabelle zu erhalten? Sobald Sie das Funktionsprinzip der Zählfunktion verstanden haben, werden die Antworten auf die obigen Fragen meiner Meinung nach klarer. 2. Tabellenstruktur Um das obige Problem zu lösen, habe ich eine Benutzertabelle mit zwei Feldern erstellt: Primärschlüssel-ID und Name, letzterer kann null sein. Die Anweisung zur Tabellenerstellung lautet wie folgt. CREATE TABLE `Benutzer` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Primärschlüssel', `name` varchar(255) STANDARD NULL KOMMENTAR 'Name', PRIMÄRSCHLÜSSEL (`id`) )ENGINE=InnoDB STANDARD-CHARSET=utf8; Diese Tabelle enthält 6.000.000 Datensätze. Das Namensfeld der ersten 1.000.000 Datensätze ist leer und die restlichen Datensätze haben Name=ID. Der Code zum Erstellen von Testdaten mithilfe einer gespeicherten Prozedur lautet wie folgt - Verwenden Sie gespeicherte Prozeduren, um Testdatentrennzeichen zu erstellen;; Prozedur idata() erstellen beginnen deklariere i int; setze i=1; während(i<=6000000)mache in Benutzerwerte (i, i) einfügen; setze i=i+1; Ende während; Ende;; Trennzeichen; rufen Sie idata() auf; -- Setzen Sie das Namensfeld der ersten 1.000.000 Datensätze auf null Benutzersatzname aktualisieren=null, wobei ID<1000000; 3. Ausführen von SQL-Anweisungen und Ergebnissen Um die Unterschiede zwischen den verschiedenen Parametern der Zählfunktion zu unterscheiden, wird die Ausführungseffizienz von SQL hauptsächlich anhand der beiden Aspekte Ausführungszeit und Anzahl der gescannten Zeilen beschrieben. Die Eigenschaften der Zählfunktion werden auch anhand der zurückgegebenen Ergebnisse beschrieben.
3.1 * Symbol mysql> wähle count(*) vom Benutzer aus; +----------+ | Anzahl(*) | +----------+ | 6000000 | +----------+ 1 Zeile im Satz (0,76 Sek.) Durchlaufen Sie die gesamte Tabelle, nehmen Sie keine Werte an (nach der Optimierung darf sie nicht null sein, nehmen Sie keine Werte an), sammeln Sie die Zählungen und geben Sie schließlich die Ergebnisse zurück. 3.2 Konstanten mysql> wähle count(1) vom Benutzer aus; +----------+ | Anzahl(1) | +----------+ | 6000000 | +----------+ 1 Zeile im Satz (0,76 Sek.) Durchlaufen Sie die gesamte Tabelle, rufen Sie die Daten Zeile für Zeile ab, weisen Sie jeder Zeile den Wert 1 zu, stellen Sie fest, dass das Feld nicht leer sein kann, akkumulieren Sie die Anzahl und geben Sie schließlich das Ergebnis zurück. 3.3 Nicht leere Felder mysql> wähle Anzahl(ID) vom Benutzer aus; +-------------+ | Anzahl(ID) | +-------------+ | 6000000 | +-------------+ 1 Zeile im Satz (0,85 Sek.) Durchlaufen Sie die gesamte Tabelle, rufen Sie die Daten Zeile für Zeile ab (zum Durchlaufen wird der kleinste Indexbaum ausgewählt, daher ist dies effizienter als das Zählen von Feldern in derselben Situation), rufen Sie die Primärschlüssel-ID jeder Zeile ab, stellen Sie fest, dass das Feld nicht leer sein kann, akkumulieren Sie die Anzahl und geben Sie schließlich das Ergebnis zurück. 3.4 Nullable-Felder mysql> wähle count(name) vom Benutzer aus; +-------------+ | Anzahl(Name) | +-------------+ | 5900001 | +-------------+ 1 Zeile im Satz (0,93 Sek.)
4. Analyse der Ausführungsergebnisse 4.1 Ergebnismenge Zunächst einmal ist aus Sicht des Ergebnissatzes der Zweck der ersten drei SQL-Anweisungen derselbe: Sie geben die Anzahl aller Zeilen zurück. Wenn der Parameter 4.2 Ausführungszeit Aus Sicht der Ausführungszeit beträgt die Effizienz ungefähr 5. Fazit Count ist eine Aggregatfunktion. Für den zurückgegebenen Ergebnissatz wird zeilenweise beurteilt. Wenn der Parameter der Zählfunktion nicht NULL ist, wird der kumulierte Wert um 1 erhöht, andernfalls wird er nicht erhöht. Abschließend wird der kumulierte Wert zurückgegeben.
Daher ist es besser, count(*) zu verwenden. Oben finden Sie ausführliche Informationen zur korrekten Verwendung der Zählfunktion in MySQL. Weitere Informationen zur MySQL-Zählfunktion finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Beispielcode zur Verwendung der Elementkalenderkomponente in Vue
>>: So erstellen Sie DockerHub selbst
Vorwort Hinweis: Die Testdatenbankversion ist MyS...
In diesem Artikelbeispiel wird der spezifische Co...
1. Einführung in Nginx Nginx ist ein Webserver, d...
Docker installiert MySQL Docker-Suche MySQL. Such...
Die folgenden Informationen sind aus dem Internet ...
1. Einführung in Docker 1.1 Virtualisierung 1.1.1...
Inhaltsverzeichnis Installieren Grundlegende Konf...
Der wichtigste Schritt bei der Verpacken einer Id...
Ein Muss für Vorstellungsgespräche. Sie werden es...
Inhaltsverzeichnis Vorwort 1. Laden Sie MySQL 8.0...
Wenn wir eine Seite erstellen, insbesondere eine ...
Durch Funktionen lassen sich beliebig viele Anwei...
Durch Klicken Bilder zu wechseln, ist im Leben ei...
In diesem Artikelbeispiel wird der spezifische Co...
Überprüfen Sie, was in MySQL installiert ist grep...