我想知道这个问题已经有一段时间了。在计算主键 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/