Comprendre les différences entre COUNT(*) et COUNT(column_name)
Lorsque vous travaillez avec des requêtes SQL, il est essentiel de saisir la distinction entre COUNT(*) et COUNT(column_name) pour garantir l'exactitude résultats.
COUNT(*)
COUNT(*) compte toutes les lignes de l'ensemble de résultats, qu'elles contiennent ou non des valeurs NULL. Il s'agit du décompte le plus inclusif, car il prend en compte chaque ligne qui répond aux critères de requête.
COUNT(column_name)
COUNT(column_name) ne compte que les lignes où le la colonne spécifiée n’est pas NULL. Cette fonction ignore les lignes avec des valeurs manquantes pour la colonne donnée.
Implications sur les performances
COUNT() peut être plus gourmand en calcul que COUNT(column_name) lorsqu'il y a y a plusieurs valeurs NULL dans le tableau. Étant donné que COUNT() doit vérifier chaque ligne malgré tout, il peut fonctionner plus lentement dans de tels scénarios.
Alternative à COUNT(*)
COUNT(1) est une alternative à COUNT(*) qui renvoie également le nombre total de lignes. Cependant, il est toujours évalué à une valeur non NULL, quelles que soient les autres valeurs de colonne.
Démonstration expérimentale
Pour illustrer la différence entre les résultats, considérez le tableau suivant et requête :
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;
Résultat :
a b c 3 2 3
Comme vous pouvez le voir, COUNT() renvoie 3 car il compte toutes les lignes, tandis que COUNT( x) renvoie 2, à l'exclusion de la ligne de valeur NULL. COUNT(1), étant impossible à distinguer de COUNT(), renvoie également 3.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!