mysql - 我应该计数(*)还是不?

标签 mysql performance innodb

我知道做这样的查询通常是个坏主意:

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/

相关文章:

database - CYPHER 2.3 在 Neo4j 查询中的性能

mysql - 从大型 IEnumerable 获取计数

mysql - Insert..Select into InnoDB table with commit after every insert?

mysql - 如何检查某个值是否存在或是否存在两次?

Python 导入突然失败

SQL 性能 MAX()

mariadb - SQL - INNODB vs MyISAM vs Aria

MySQL 搜索 TEXT 字段以匹配文本,用于多行绝对

mysql - 如何更改mySQL输出的字符数?

PHP 和 MySQL 问题