我知道做这样的查询通常是个坏主意:
SELECT * FROM `group_relations`
但是当我只想要计数时,我是否应该进行此查询,因为它允许表更改但仍会产生相同的结果。
SELECT COUNT(*) FROM `group_relations`
或者更具体的
SELECT COUNT(`group_id`) FROM `group_relations`
我感觉后者可能会更快,但还有其他需要考虑的事情吗?
更新:在这种情况下我使用的是 InnoDB,抱歉没有更具体。
最佳答案
如果有问题的列不为 NULL,则您的两个查询都是等效的。当 group_id 包含空值时,
select count(*)
将计算所有行,而
select count(group_id)
只会计算 group_id 不为空的行。
此外,一些数据库系统,如 MySQL,在您请求 count(*) 时采用了优化,这使得此类查询比特定查询快一点。
就我个人而言,在计算时,我会使用 count(*) 来保证空值的安全。
关于mysql - 我应该计数(*)还是不?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/457263/