可能重复:
计数(*)与计数(1)
我记得有传闻说:
当count(1)执行时,永远不要使用count(*)
最近我把这个建议传递给了另一位开发人员,并且被要求证明这是真的.当我得到建议时,我的论点就是我被告知的情况:数据库只返回第一列,然后计算.反驳的是,数据库不会评估括号中的任何内容.
从小桌子上的一些(不科学的)测试来看,似乎没有区别.我目前无权访问任何大型表格进行试验.
当我使用Sybase时,我得到了这个建议,表有数亿行.我现在正在使用Oracle并且数据少得多.
所以我想总结一下,我的两个问题是:
and*_*ndy 17
根据另一个类似的问题(Count(*)vs Count(1)),它们是相同的.
根据Ask Tom的说法,在Oracle中,count(*)是计算行数的正确方法,因为优化器将count(1)更改为count(*).count(1)实际上意味着计算具有非null 1的行(所有这些都是非null,因此优化器将为您更改它).
看到
对于MYSQL(count(*)和count(1)之间没有区别)
http://beyondrelational.com/blogs/dave_ballantyne/archive/2010/07/27/count-or-count-1.aspx
对于MS Sql Server(没有区别)
http://dbaspot.com/sybase/349079-count-vs-count-1-a.html
用于Sybase(没有区别)
| 归档时间: |
|
| 查看次数: |
14579 次 |
| 最近记录: |