援引我的blog的一篇文章。
这是一篇改写的文章,原文来自
http://www.db-nemec.com/Selecting_ROWNUM_1.html ,我只是结合我的实验重述,如果大家有时间,可以看看原文。
如果想判断一个表中是否有数据,最简单的方法是:
SELECT count(*) FROM test WHERE ROWNUM = 1;
正常情况下它的执行计划如下:
SQL> select count(*) from TEST where rownum = 1;
Elapsed: 00:00:00.00
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=40145 Card=1)
1 0 SORT (AGGREGATE)
2 1 COUNT (STOPKEY)
3 2 PARTITION RANGE (ALL) (Cost=40145 Card=7639515)
4 3 TABLE ACCESS (FULL) OF 'TEST' (TABLE) (Cost=40145 Card=7639515)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
4