sql >> Databáze >  >> RDS >> Mysql

count(*) a count(název_sloupce), jaký je rozdíl?

  • COUNT(*) počítá všechny řádky v sadě výsledků (nebo skupině, pokud používáte GROUP BY).
  • COUNT(column_name) počítá pouze ty řádky, kde je column_name NENÍ NULL. To může být v některých situacích pomalejší, i když nejsou k dispozici žádné hodnoty NULL, protože hodnotu je třeba zkontrolovat (pokud sloupec nemá hodnotu null).
  • COUNT(1) je stejný jako COUNT(*) protože 1 nemůže být nikdy NULL.

Chcete-li vidět rozdíl ve výsledcích, můžete zkusit tento malý experiment:

CREATE TABLE table1 (x INT NULL);
INSERT INTO table1 (x) VALUES (1), (2), (NULL);
SELECT
    COUNT(*) AS a,
    COUNT(x) AS b,
    COUNT(1) AS c
FROM table1;

Výsledek:

a   b   c
3   2   3


  1. T-SQL poddotaz Max (datum) a spojení

  2. Alternativy MySQL Workbench – GUI Point-and-Click od ClusterControl

  3. Poškození databáze

  4. Změňte sloupce PostgreSQL používané v pohledech