是否有所作为,如果你这样做count(*)
VS count(column-name)
在这两个例子?
我倾向于总是写作,count(*)
因为它似乎更符合我的想法,它是一个集合函数,如果这是有道理的.
但我不确定它是否在技术上最好,因为我倾向于看到没有*
经常写的示例代码.
计数(*):
select customerid, count(*), sum(price)
from items_ordered
group by customerid
having count(*) > 1;
Run Code Online (Sandbox Code Playgroud)
与count(列名):
SELECT customerid, count(customerid), sum(price)
FROM items_ordered
GROUP BY customerid
HAVING count(customerid) > 1;
Run Code Online (Sandbox Code Playgroud)
gbn*_*gbn 135
COUNT(*)
统计所有行COUNT(column)
仅计算非NULLCOUNT(1)
是COUNT(*)
因为1是非空表达式您在使用COUNT(*)
或COUNT(column)
应根据所需的输出只.
nic*_*ckf 33
这适用于MySQL.我不确定其他人.
不同之处是:
COUNT(*)
将计算记录数. COUNT(column_name)
将计算column_name不为null的记录数.因此COUNT(*)
,你应该使用.如果您正在使用MyISAM并且没有WHERE
子句,那么优化器甚至不必查看该表,因为已经缓存了行数.
Dea*_*ing 19
当它是一个标识符(并保证是非标识符NULL
)时,它可能无关紧要.
但是,有是之间的差异COUNT(*)
,并COUNT(column)
在一般情况下,这COUNT(column)
将返回非计数NULL
列中的值.还有COUNT(DISTINCT column)
变量返回唯一的非NULL
值的数量.
通常它是相同的,但在细节上AFAIK "count(*)"是更好的 b/c"count(columnname)"强制DB执行更多代码来查找该列名称(但不是必需的).
归档时间: |
|
查看次数: |
82559 次 |
最近记录: |