MySQL对哪个列COUNT()来说很重要

时间:2016-02-26 08:39:30

标签: 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()调用另一列是否重要?

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

1 个答案:

答案 0 :(得分:1)

是的,这很重要。选择count(*)允许DB使用任何有意义且最有效的资源。它可以作为表扫描,使用主键或其他索引来回答您的问题。

Count(something-else)表示计算非空值。同样,DB可以使用多种方法,例如索引,如果这样的东西可用,那么你会问另一个问题。

正如SQL的情况一样,最好问一下你想要答案的问题,而不是玩傻游戏试图在这里和那里玩几毫秒。

通过清楚地陈述你想要做的事情,这也有助于你未来的同事。