MySQL 对哪一列进行 COUNT() 计算很重要

标签 mysql

我想知道这个问题已经有一段时间了。在计算主键 ticket_id 的情况下这样做是否更好:

SELECT COUNT(ticket_id) 
FROM tickets
WHERE ticket_country_id = 238

或者执行此操作:

SELECT COUNT(ticket_country_id) 
FROM tickets
WHERE ticket_country_id = 238

在本例中,ticket_country_id 是一个索引外键,但我们也可以假设它只是一个非索引列(对于非索引列,答案可能会有所不同)

换句话说,我为 COUNT() 调用另一列有什么关系吗?

显然,性能节省可能很小,但我喜欢以最好的方式做事。

最佳答案

是的,这很重要。 Select count(*) 允许数据库使用任何有意义且最高效的资源。它可以像表扫描一样,使用主键或其他索引来回答您的问题。

Count(something-else) 表示对非空值进行计数。同样,数据库可以使用多种方法,例如索引(如果可用),但您会问一个不同的问题。

与 SQL 的常见情况一样,最好提出您想要答案的问题,而不是玩愚蠢的游戏,试图在这里或那里玩几毫秒的系统。

通过清楚地说明您正在尝试做的事情,这对您 future 的同事也有帮助。

关于MySQL 对哪一列进行 COUNT() 计算很重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35647037/

相关文章:

PHP 和 MySQL - 发布双重条目

PHP/MySQL 在比较网格或表格中显示产品和类别

MySQL - 如何根据购买的产品类型(在运行时间不会太长的查询中)为特定用户 ID 选择最新行?

mysql - 触发以跟踪 MySQL 数据库中的更改

Python:MySQL批量插入,跳过外键约束失败的条目

MySQL 对计算进行排序

MySQL如何呈现当天的结果(表中的起始值、总变化和日终值)

mySQL 查询与否

java - 在对整个 MySQL 结果进行平均之前限制每组的记录

MySQL:如果表 1 中存在行,则在表 2 上插入行