当使用COUNT
函数编写SQL语句时,我有两个选择。COUNT SQL函数的性能
SELECT COUNT(*) FROM <table_name>
SELECT COUNT(some_column_name) FROM <table_name>
在性能方面,什么是最好的SQL语句? 使用选项1可以获得一些性能增益吗?
当使用COUNT
函数编写SQL语句时,我有两个选择。COUNT SQL函数的性能
SELECT COUNT(*) FROM <table_name>
SELECT COUNT(some_column_name) FROM <table_name>
在性能方面,什么是最好的SQL语句? 使用选项1可以获得一些性能增益吗?
性能不应该的问题,因为他们做的2个不同的聚集
COUNT(*)
为所有行,包括空值COUNT(some_column_name)
,在排除了NULL “some_column_name
”参见 “Count(*) vs Count(1)” 的问题更多
不,Sql Server没有性能提升。
选项2实际上统计some_column_name
不为空的所有字段。选项1计算任何字段不为空的所有字段。所以你可能会从这两个查询中得到不同的结果。大多数时候,你居然要计数所有行,然后最快的选项,不检查任何字段的时候,简直是SELECT COUNT(1) FROM ...
请参阅此计数(*)与计数(1)http://stackoverflow.com/questions/1221559/ – gbn 2009-11-17 10:53:28
计数(*)还计算所有行,而不是任何值的行不为空。就性能而言,Count(*)和Count(1)是相同的,因为查询优化器可以识别您正在尝试执行的操作并生成相同的执行计划。 – 2009-11-17 10:56:15
SQL Server? MySQL的? – gbn 2009-11-17 11:00:17
我正在使用MS SQL Server 2005 – 2009-11-17 11:41:07