当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle分页查询语句(二)
发布时间:2010/11/8 10:13:56 来源:www.xue.net 编辑:城市总裁吧
      Execution Plan

  ----------------------------------------------------------

  0 SELECT STATEMENT Optimizer=HINT: FIRST_ROWS (Cost=826 Card=20 Bytes=1840)

  1 0 VIEW (Cost=826 Card=20 Bytes=1840)

  2 1 COUNT (STOPKEY)

  3 2 VIEW (Cost=826 Card=6361 Bytes=502519)

  4 3 TABLE ACCESS (BY INDEX ROWID) OF 'T' (Cost=826 Card=6361 Bytes=133581)

  5 4 INDEX (FULL SCAN) OF 'IND_T_OBJECT_NAME' (NON-UNIQUE) (Cost=26 Card=6361)

  Statistics

  ----------------------------------------------------------

  0 recursive calls

  0 db block gets

  22 consistent gets

  0 physical reads

  0 redo size

  673 bytes sent via SQL*Net to client

  503 bytes received via SQL*Net from client

  2 SQL*Net roundtrips to/from client

  0 sorts (memory)

  0 sorts (disk)

  10 rows processed

  使用了FIRST_ROWS提示后,Oracle不需要扫描全表,而且避免了排序操作。

  下面讨论最后一种情况,排序列不是索引列。这个时候排序不可避免,但是利用给出分页格式,Oracle不会对所有数据进行排序,而是只排序前N条记录。

  SQL> SELECT OBJECT_ID, OBJECT_NAME

  2 FROM

  3 (

  4 SELECT ROWNUM RN, OBJECT_ID, OBJECT_NAME

  5 FROM

  6 (

  7 SELECT OBJECT_ID, OBJECT_NAME FROM T ORDER BY TIMESTAMP

  8 )

  9 )

  10 WHERE RN BETWEEN 11 AND 20;

  已选择10行。

  Execution Plan

  ----------------------------------------------------------

  0 SELECT STATEMENT Optimizer=CHOOSE (Cost=64 Card=6361 Bytes=585212)

  1 0 VIEW (Cost=64 Card=6361 Bytes=585212)

  2 1 COUNT

  3 2 VIEW (Cost=64 Card=6361 Bytes=502519)

  4 3 SORT (ORDER BY) (Cost=64 Card=6361 Bytes=260801)

  5 4 TABLE ACCESS (FULL) OF 'T' (Cost=9 Card=6361 Bytes=260801)

  Statistics

  ----------------------------------------------------------

  0 recursive calls

  0 db block gets

  81 consistent gets

  0 physical reads

  0 redo size

  690 bytes sent via SQL*Net to client

  503 bytes received via SQL*Net from client

  2 SQL*Net roundtrips to/from client

  1 sorts (memory)

  0 sorts (disk)

  10 rows processed

  SQL> SELECT OBJECT_ID, OBJECT_NAME

  2 FROM

  3 (

  4 SELECT ROWNUM RN, OBJECT_ID, OBJECT_NAME

  5 FROM

  6 (

  7 SELECT OBJECT_ID, OBJECT_NAME FROM T ORDER BY TIMESTAMP

  8 )

  9 WHERE ROWNUM <= 20

  10 )

  11 WHERE RN >= 11;

  已选择10行。

  Execution Plan

  ----------------------------------------------------------

  0 SELECT STATEMENT Optimizer=CHOOSE (Cost=64 Card=20 Bytes=1840)

  1 0 VIEW (Cost=64 Card=20 Bytes=1840)

  2 1 COUNT (STOPKEY)

  3 2 VIEW (Cost=64 Card=6361 Bytes=502519)

  4 3 SORT (ORDER BY STOPKEY) (Cost=64 Card=6361 Bytes=260801)

  5 4 TABLE ACCESS (FULL) OF 'T' (Cost=9 Card=6361 Bytes=260801)

  Statistics

  ----------------------------------------------------------

  0 recursive calls

  0 db block gets

  81 consistent gets

  0 physical reads

  0 redo size

  690 bytes sent via SQL*Net to client

  503 bytes received via SQL*Net from client

  2 SQL*Net roundtrips to/from client

  1 sorts (memory)

  0 sorts (disk)

  10 rows processed

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved