我想知道使用之间有什么区别:
SELECT email, COUNT( email ) AS total
FROM `newsletter`
GROUP BY email having total>1
或
SELECT count(*) as total, email
FROM 'newsletter'
GROUP BY email having total > 1
两者都给出了相同的结果,但除了电子邮件之外还有什么计算count(*)
?
答案 0 :(得分:5)
答案 1 :(得分:2)
COUNT(*)计算所有行WHEREAS COUNT(columnname)仅计算非NULL值。
答案 2 :(得分:2)
count(*)
允许数据库使用索引进行计数,因此可以进行性能改进。如你所说,在大多数情况下结果是一样的,但是:
count(column)
仅计算非空行所以在colusion中:如果你不得不使用空值,请使用count(column)
,否则使用count(*)
以获得更好的性能。
答案 3 :(得分:1)
SELECT COUNT(*)
统计所有ROWS
SELECT COUNT(email)
计算所有VALUES(非NULL值)
在您的情况下,如果所有行都包含值,则两个结果可能相同。但它可以改善性能,但这取决于表volumne,存储引擎,索引......