Count(*)和Count(列)哪一个更快?
1. count(*) 和 count(列) 在没有任何优化的前提下执行效率相等。
2. 如果(列)有索引执行效率高于count(*)。
3. 如果设置某一列为not null 则count(*) 和 count(列) 执行时间相等。

由图可知,执行时间与(列)的排位顺序有关,如果列越靠后,执行系效率越低。
BigTable 和 SmallTable 哪一个在前面执行效率更高?


可以看出,执行效率与大小表的前后顺序无关。
Oracle在早期的版本中是基于规则的而现在的Oracle(10G以后)是基于代价的。
select /+rule/ count() from smalltable,bigtable;
select /+rule*/ count(*) from bigtable,smalltable;
IN 和 Exist 的实验证明。
在Oracle 10g环境的情况
在明确表明字段是非空的情况下,not in 的执行效率要高。
在oracle 11g 的情况下