Maison > base de données > tutoriel mysql > Count(*) vs Count(1) dans SQL Server : est-il vraiment plus performant ?

Count(*) vs Count(1) dans SQL Server : est-il vraiment plus performant ?

Linda Hamilton
Libérer: 2025-01-23 18:44:13
original
671 Les gens l'ont consulté

Count(*) vs. Count(1) in SQL Server: Does One Really Perform Better?

*Différence de performances entre COUNT() et COUNT(1) dans SQL Server : analyse approfondie**

Il y a depuis longtemps un débat sur l'utilisation de COUNT() et COUNT(1) dans SQL Server. Bien que l'objectif des deux requêtes soit de compter le nombre de lignes dans le tableau, certains développeurs pensent que COUNT(1) est plus performant que COUNT().

Compréhension approfondie des différences entre les deux

La principale différence entre

COUNT() et COUNT(1) est l'expression qu'ils comptent. COUNT() Compte le nombre de lignes dans un tableau, qu'une colonne particulière contienne ou non des données. En revanche, COUNT(1) compte le nombre d’occurrences du littéral « 1 » dans la colonne spécifiée.

Analyse des performances

Selon la documentation Microsoft et les tests empiriques, il n'y a pas de différence de performances significative entre COUNT(*) et COUNT(1) dans SQL Server. L'optimiseur reconnaît que ces deux expressions ont la même valeur et optimise la requête en conséquence.

Incompréhensions des concepts traditionnels

L'idée selon laquelle COUNT(1) fonctionne mieux que COUNT(*) provient probablement de versions antérieures de SQL Server ou d'autres systèmes de bases de données où il existait une réelle différence de performances entre les deux. Cependant, dans les versions modernes de SQL Server, cette optimisation est obsolète.

Exemple

Pour prouver l'équivalence de COUNT(*) et COUNT(1), considérons la requête suivante :

<code class="language-sql">SELECT COUNT(*) FROM dbo.table1;</code>
Copier après la connexion

Cette requête renverra les mêmes résultats que la requête suivante :

<code class="language-sql">SELECT COUNT(1) FROM dbo.table1;</code>
Copier après la connexion

Conclusion

Bien que COUNT(*) et COUNT(1) puissent être utilisés pour compter les lignes dans SQL Server, il n'y a aucun avantage en termes de performances à utiliser l'un par rapport à l'autre. Il est conseillé aux développeurs de choisir l'expression qui répond le mieux aux exigences spécifiques de leur requête.

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