Maison >base de données >tutoriel mysql >Count(*) vs Count(1) dans SQL Server : existe-t-il une différence de performances ?

Count(*) vs Count(1) dans SQL Server : existe-t-il une différence de performances ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-23 18:22:08656parcourir

Count(*) vs. Count(1) in SQL Server: Is There a Performance Difference?

*SQL Server : Count() vs Count(1) – Une analyse des performances**

De nombreux utilisateurs de SQL s'interrogent sur la différence de performances entre COUNT(*) et COUNT(1). Les deux fonctions comptent les lignes, mais y a-t-il un réel impact sur les performances ?

Dans SQL Server (en particulier dans les versions à partir de 2005), la réponse est simple : aucune différence de performances significative n'existe.

La documentation de Microsoft précise que COUNT(*) compte toutes les lignes d'un tableau (ou celles répondant à une condition spécifiée). Surtout, COUNT(1)—car « 1 » est une expression non nulle – donne le même résultat.

L'optimiseur de requêtes SQL Server reconnaît cette équivalence. Il traite les deux fonctions de la même manière, ce qui entraîne le même plan d'exécution, les mêmes opérations d'E/S et, finalement, les mêmes performances.

Considérez ces exemples :

<code class="language-sql">SELECT COUNT(1) FROM dbo.tab800krows;
SELECT COUNT(1), FKID FROM dbo.tab800krows GROUP BY FKID;

SELECT COUNT(*) FROM dbo.tab800krows;
SELECT COUNT(*), FKID FROM dbo.tab800krows GROUP BY FKID;</code>

L'exécution de ces requêtes produira des résultats identiques, confirmant l'équivalence fonctionnelle de COUNT(*) et COUNT(1). Par conséquent, le choix entre eux est en grande partie une question de style de codage ou de préférence personnelle ; cela n'aura pas d'impact sur les performances des requêtes dans SQL Server.

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!

Déclaration:
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