Ausführliche Erklärung der Aggregatfunktion count() in MySQL!

1. Detaillierte Verwendung (5 Typen)

1. Die Funktion COUNT(*) gibt die Anzahl aller Zeilen in der Tabelle zurück, einschließlich Zeilen mit NULL-Werten.

SELECT COUNT(*) FROM students;

2. Die Funktion COUNT(column_name) gibt die Anzahl der Nicht-NULL-Werte in der angegebenen Spalte zurück und ignoriert Zeilen mit NULL-Werten.

SELECT COUNT(age) FROM students;

3. COUNT(DISTINCT Spaltenname) gibt die Anzahl der unterschiedlichen Werte in der angegebenen Spalte zurück und ignoriert Zeilen mit NULL-Werten.

SELECT COUNT(DISTINCT age) FROM students;

4. Die Funktion COUNT(DISTINCT expr,[expr...]) gibt die Anzahl der unterschiedlichen Nicht-NULL-Werte im angegebenen Ausdruck zurück und ignoriert Zeilen mit NULL-Werten.

SELECT COUNT(DISTINCT age, gender) FROM students;

5. Die Funktion COUNT(IF(condition, columns_name, NULL)) gibt die Anzahl der Nicht-NULL-Werte in der angegebenen Spalte zurück, die die angegebene Bedingung erfüllen.

SELECT COUNT(IF(gender='Female', 1, NULL)) FROM students;

In dieser SQL-Anweisung bedeutet IF(gender='Female', 1, NULL), dass, wenn das Geschlecht des Schülers 'Weiblich' ist, 1 zurückgegeben wird, andernfalls NULL zurückgegeben wird.

Wenn in der COUNT-Funktion das Argument der Funktion ein Spaltenname ist, gibt sie die Anzahl der Nicht-Null-Werte in dieser Spalte zurück. Daher besteht die Bedeutung dieser SQL-Anweisung darin, die Anzahl der Schüler zu zählen, deren Geschlecht in der Schülertabelle „weiblich“ ist. Konvertieren Sie mit der IF-Funktion alle Zeilen mit dem Geschlecht „Weiblich“ in 1, und dann gibt die COUNT-Funktion die Anzahl dieser Einsen zurück, also die Anzahl der Schüler mit dem Geschlecht „Weiblich“.

Beachten Sie, dass bei Verwendung von COUNT(*) die Anzahl aller Zeilen in der Tabelle zurückgegeben wird, unabhängig davon, ob der Wert der Zeile NULL ist. Und wenn Sie COUNT(column_name) verwenden, zählen Sie nur die Anzahl der Nicht-Null-Werte in der angegebenen Spalte. Da in der obigen SQL-Anweisung die IF-Funktion Zeilen, deren Geschlecht nicht „Weiblich“ ist, in NULL konvertiert, zählt die COUNT-Funktion nur die Anzahl der Schüler, deren Geschlecht „Weiblich“ ist.

2. Für wen ist count(*), count(1), count(Spaltenname) besser geeignet?

1.
Bei der Verwendung von COUNT(*) Funktionen sind die drei häufig verwendeten Methoden COUNT(*), COUNT(1) und COUNT(Spaltenname), die alle zum Zählen der Zeilenanzahl verwendet werden können. Sie unterscheiden sich jedoch in der Leistung, und die Auswahl der richtigen Lösung kann die Abfrageeffizienz verbessern.

COUNT(*)
COUNT(*) Dies ist die gebräuchlichste Methode, mit der die Anzahl aller Zeilen gezählt werden kann, einschließlich NULL-Werten. In praktischen Anwendungen ist die Leistung von COUNT () relativ hoch, da die Datenbank ohne zusätzliche Vorgänge direkt die Metadaten der Tabelle verwenden kann, um die Anzahl der Zeilen bei der Abfrage zu berechnen. Daher wird die Verwendung empfohlen, wenn alle Zeilen gezählt werden müssen COUNT(*) .

2.
Die Funktion von COUNT(1) ist die gleiche wie COUNT(), sie kann auch die Anzahl aller Zeilen zählen, einschließlich NULL-Werten. Im Vergleich zu COUNT () ist die Leistung von COUNT (1) etwas schlechter, da der Wert jeder Zeile bei der Abfrage einmal berechnet werden muss. Da dieser Unterschied in praktischen Anwendungen jedoch nicht offensichtlich ist, ist COUNT(1) ebenfalls eine häufig verwendete Methode.

3.
COUNT(column_name) zählt nur die Anzahl der Nicht-NULL-Werte in der angegebenen Spalte und ignoriert NULL-Werte. Wenn Sie daher die Anzahl der Nicht-NULL-Werte in der angegebenen Spalte zählen müssen, können Sie COUNT (Spaltenname) verwenden. Die Leistung dieser Methode ist relativ gering, da die gesamte Tabelle gescannt werden muss und für jede Zeile eine Beurteilung vorgenommen werden muss.

Zusammenfassend lässt sich sagen, dass COUNT() und COUNT(1) im Allgemeinen schneller sind als COUNT(column_name), da sie keinen Wertevergleich erfordern und Tabellenmetadaten zum Zählen von Zeilen verwenden können. Daher wird in den meisten Fällen die Verwendung von COUNT() oder COUNT(1) empfohlen.

Acho que você gosta

Origin blog.csdn.net/qq_45796667/article/details/129889687
Recomendado
Clasificación