公司招聘java程序员出的一道sql题目:
select count(*) from xxx与 select count(列) from xxx有什么区别?
应该再加上select count(1) from xxx?
本人理解count(*)和count(1)无区别,都是统计所有行的
据说在8i之前有区别,但是本人没有接触过8i的版本,8i之前的东西对我来说只是个传说,不理也罢。当然如果表xxx有索引,并且索引列非空,那么可以走索引。
对于索引列存在为空的记录,当然加上列is not null条件,也可以走索引,如果真的有空记录,那么加了条件结果是不同的。
count(col)就是按这个col列统计了,如果列有索引,不管col是否为空,都能走索引,只是统计的结果是:col列不为空的记录