我记得有传言称被告知:
从未使用count( *)当计数(1)将做
最近我把这个建议传给了另一个开发者,并且被证明这是真的。我的观点是我得到建议时告诉我的:数据库只会返回第一列,然后将被计数。反驳是数据库不会评估括号中的任何内容。
从小桌子上的一些(不科学的)测试看来,似乎没有区别。我目前无法访问任何大型表格进行试验。
我在使用Sybase时得到了这个建议,而且表有数以百万计的行。我现在正在使用Oracle,而且数据少得多。
所以我想总的来说,我的两个问题是:
- 这是更快,计数(1)或COUNT(*)?
- 这会因不同的数据库供应商而有所不同吗?
1. ANSI SQL定义'COUNT(*)'应该优化2.这适用于大多数RDBMS。别的仅适用于旧版本的*另有说明,否则*承担COUNT(*)进行了优化。 – gbn