【发布时间】:2011-10-30 18:33:12
【问题描述】:
可能重复:
Count(*) vs Count(1)
我记得有人告诉我:
当 count(1) 可以使用时,切勿使用 count(*)
最近,我将此建议传递给了另一位开发人员,并被要求证明这是真的。我的论点是当我得到建议时被告知的:数据库将只返回第一列,然后将其计算在内。反对意见是数据库不会评估括号中的任何内容。
从对小桌子的一些(不科学)测试来看,似乎肯定没有区别。我目前无权访问任何大型表来进行实验。
我在使用 Sybase 时得到了这个建议,而表有数亿行。我现在正在使用 Oracle,但数据量要少得多。
所以我想总结一下,我的两个问题是:
- count(1) 和 count(*) 哪个更快?
- 这在不同的数据库供应商中会有所不同吗?
【问题讨论】:
-
1. ANSI SQL 定义
COUNT(*)应该被优化2。这适用于大多数RDBMS。其他任何内容仅适用于旧版本声明的地方,否则假定 COUNT(*) 已优化。
标签: sql