oracle分页rowid,你是否仍迷信rowid分页?

本帖最后由 Kevin__Zhang 于 2012-4-19 12:34 编辑一直以来,看到的说法大都是rowid要强于rownum分页:在索引设计的没问题的前提下,两种方式在前几页性能上接近,越向后翻rowid的效果越明显。注意红字部分,红字部分一定成立吗?实验说明一切。我们先来看看11g的情况,建立实验环境:11gR2 >create table test(id number,statu...
摘要由CSDN通过智能技术生成

本帖最后由 Kevin__Zhang 于 2012-4-19 12:34 编辑

一直以来,看到的说法大都是rowid要强于rownum分页:

在索引设计的没问题的前提下,两种方式在前几页性能上接近,越向后翻rowid的效果越明显。

注意红字部分,红字部分一定成立吗?实验说明一切。

我们先来看看11g的情况,建立实验环境:

11gR2 >create table test(id number,status VARCHAR2(7),type VARCHAR2(19),created date);

Table created.

11gR2 >insert into test select OBJECT_ID,STATUS,OBJECT_TYPE,CREATED from dba_objects;

12926 rows created.

11gR2 >alter table test modify created not null;

Table altered.

11gR2 >create index test_ind1 on test(CREATED);

Index created.

11gR2 >ANALYZE TABLE TEST compute statistics;

Table analyzed.

测试11g的rownum分页:

11gR2 >select *

from (

select rownum rn,t.*

from

(select  id,status,type,created from test order by created) t

where rownum<1000)

where rn >900;

99 rows selected.

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

| Id  | Operation                      | Name      | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT               |           |   999 | 50949 |     9   (0)| 00:00:01 |

|*  1 |  VIEW                          |           |   999 | 50949 |     9   (0)| 00:00:01 |

|*  2 |   COUNT STOPKEY                |           |       |       |            |          |

|   3 |    VIEW                        |           |   999 | 37962 |     9   (0)| 00:00:01 |

|   4 |     TABLE ACCESS BY INDEX ROWID| TEST      | 12926 |   277K|     9   (0)| 00:00:01 |

|   5 |      INDEX FULL SCAN           | TEST_IND1 |   999 |       |     4   (0)| 00:00:01 |

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

Statistics

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

0  recursive calls

0  db block gets

22  consistent gets          0  physical reads

0  redo size

3703  bytes sent via SQL*Net to client

590  bytes received via SQL*Net from client

8  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

99  rows processed

下面测试rowid分页

11gR2 >select /*+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值