我一直想知道这件事已经有一段时间了。如果计算主键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()调用另一列是否重要?
显然,性能节省可能很小,但我喜欢以最好的方式做事。
答案 0 :(得分:1)
是的,这很重要。选择count(*)允许DB使用任何有意义且最有效的资源。它可以作为表扫描,使用主键或其他索引来回答您的问题。
Count(something-else)表示计算非空值。同样,DB可以使用多种方法,例如索引,如果这样的东西可用,那么你会问另一个问题。
正如SQL的情况一样,最好问一下你想要答案的问题,而不是玩傻游戏试图在这里和那里玩几毫秒。
通过清楚地陈述你想要做的事情,这也有助于你未来的同事。