Maison > base de données > tutoriel mysql > COUNT(*) vs. COUNT(column_name) : quelle est la différence et quand devez-vous les utiliser ?

COUNT(*) vs. COUNT(column_name) : quelle est la différence et quand devez-vous les utiliser ?

Patricia Arquette
Libérer: 2024-11-17 22:49:02
original
257 Les gens l'ont consulté

COUNT(*) vs. COUNT(column_name): What's the Difference and When Should You Use Each?

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;
Copier après la connexion

Résultat :

a   b   c
3   2   3
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal