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

linux Oracle 下使用rownum很慢 - Oracle / 开发

我在Linux上装了Oracle数据库,其中有一个表,大约有90000条数据,用Oracle进行分页查询的时候,发现很慢
sql语句如下:
select *
  from (select row_.*, rownum rownum_
  from (select * from usercontract 
  order by CODE) row_)
 where rownum_ <= 100
  and rownum_ > 80
其中code不是主键,但是我按照code建了索引,
查询大约需要7s,
各位高手请帮忙分析一下
执行计划是什么?下面的写法可以少扫一次,试试:
SQL code:

select * from (
select rownum rn, t1.*
from usercontract t1
order by code) t2
where t2.rn between 80 and 100;



应该不是ROWNUM造成的,你的执行计划看看怎么走的

LZ请重新分析一下表和编译索引,如果你是在导入数据前创建的索引信息,或者索引时很久以前创建的,然后尝试下一下方式是否好用。

其次,请尝试一下几种方式,是否可以提高效率
1、假如你创建的索引名字叫做:IDX_CONTRACT_CODE,那么你这样尝试一下方法1:
SQL code:

SELECT *
from (SELECT A.*, ROWNUM RN
from (SELECT /*+INDEX_ASC(t1,IDX_CONTRACT_CODE)*/*
from USERCONTRACT T1
ORDER BY CODE) A
WHERE ROWNUM <= 100)
WHERE RN >= 80



2、方法2:
SQL cod


相关问答:

linux环境下gethostbyname函数问题 - C/C++ / C语言

写了个测试程序如下
   
  struct hostent *hp; 
char AlarmDevIP[20];  
  int x2;

hp = gethostbyname("www.google.com");
if (hp)
{ ......

oracle spatial空间函数出错 - Oracle / 高级技术

在执行包的时候引用oracle spatial空间函数出错,出错情况如下
Errors in file
/user/oracle/app/oracle/admin/grid/udump/grid1_ora_143768.trc: ORA-29902:
error in executing ODCIIndexStart() routine ORA-0 ......

Oracle临时表使用问题 - Oracle / 开发

我的处理是这样的:
我有一个很大的数据集合,处于性能方面的考虑需要使用临时表过渡,并且使用分页的方式向临时表中插入数据,数据使用完毕后,删除临时表的数据。
出现的现象:当Oracle重新启动后,第一页插入的 ......

Oracle行转列 - Oracle / 高级技术

select distinct '1' t1,'2' t2,'3' t3,'4' t4 from table 查出来的结果为
1,2,3,4
我想得以下这样的效果
1
2
3
4
请问一下有什么办法可以解决???
没有好的方法,用union,一条条记录拼接

SQL code:
wi ......

关于SQL语句OR的问题 - Oracle / 高级技术

通过NAME字段条件查询一个数据表,假设我有100个姓名,有以下两个方法,
方法1:
把100个Name 组成一个SQL语句,比如 Select * from tmp_table where Name='张三' or Name ='李四' Or ...Or Name='第一百个姓名'
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号