易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle分页查询效率问题探讨

SQL code:


--6行被选择耗时0.032秒
select * from (
select t1.*,rownum rn from (
select * from emp order by sal desc
) t1 where rownum<=10
) where rn>=5;

--6行被选择耗时0.062秒
select * from (
select t1.*,rownum rn from (
select * from emp order by sal desc
) t1
) where rn between 5 and 10;

--6行被选择耗时[color=#FF0000][b]0.015[/b][size=14px][/size][/color]秒
select * from emp where rowid in (
select rid from (
select rownum rn,rid from(
select rowid rid from emp order by sal desc
)where rownum<=10
)where rn >=5
) order by sal desc;

--6行被选择耗时0.031秒
select * from emp where rowid in (
select rid from (
select rownum rn,rid from(
select rowid rid from emp order by sal desc
)
)where rn between 5 and 10
) order by sal desc;

--6行被选择耗时0.031秒
select * from (
select t.*,row_number() over(order by sal desc) rn from emp t
)where rn between 5 and 10;






三种方法综合比较:使用rowid的效率最高,为0.015秒

这几个有什么区别吗  你从本质上分析为什么rowid的效率最高,就算是同一条SQL语句 在执行多次的情况下所消耗的时间也是大不一样啊 这是为什么呢 这样判断是不是有点问题啊

本质我也不太清楚,所以让大家讨论一下。

我感觉是因为orwid存储的是物理地址所以查询的快,并且那种方式里面几层就只需要查询rowid和rownum,所以效率要高。但


相关问答:

oracle sql developer 查询显示中文乱码

环境:1.win2003server+oracle9i
2.oracle9i字符集为AMERICAN_AMERICA.WE8ISO8859P1
3.oracle sql developer版本 1.5.5
现象描述: 1.在sql developer 中查询oracle中的某个表,中文全部显示为乱码。 ......

PHP 连接Oracle 出错

<?php
  getenv("ORACLE_HOME");
  $conn=ocilogon("test","test","test_db");
  if($conn)  
  echo success;  
&nb ......

Oracle 启动的问题

oracle not available
shared memory realm does not exist
请问高手这个问题如何解决?
http://www.inthirties.com/thread-109-2-1.html

指定下ORACLE_SID,ORACLE_HOME看看,不行就用1楼得方法了..

cm ......

跪求 lomboz eclipse 中加入oracle的问题

在lomboz eclipse中的window->show view->others->中的怎样加入connectivity中的data source中连接oracle时只有8,9,10这三个版本,怎样才能连接oracle11这个版本呢??????????????
附图片 ......

imp 导入 oracle 问题

导出、导入都是 oracle 10g 。

在导入过程中出现如下情况:

IMP-00017: 由于 ORACLE 错误 6550, 以下语句失败:
"DECLARE  SREC DBMS_STATS.STATREC; BEGIN SREC.MINVAL := '4E014E50 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号