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,所以效率要高。但
相关问答:
环境:1.win2003server+oracle9i
2.oracle9i字符集为AMERICAN_AMERICA.WE8ISO8859P1
3.oracle sql developer版本 1.5.5
现象描述: 1.在sql developer 中查询oracle中的某个表,中文全部显示为乱码。
......
<?php
getenv("ORACLE_HOME");
$conn=ocilogon("test","test","test_db");
if($conn)
echo success;
&nb ......
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中的window->show view->others->中的怎样加入connectivity中的data source中连接oracle时只有8,9,10这三个版本,怎样才能连接oracle11这个版本呢??????????????
附图片 ......
导出、导入都是 oracle 10g 。
在导入过程中出现如下情况:
IMP-00017: 由于 ORACLE 错误 6550, 以下语句失败:
"DECLARE SREC DBMS_STATS.STATREC; BEGIN SREC.MINVAL := '4E014E50 ......