11.2.0.3 hp-ux 입니다.
select a.id, b.cd ,c.name from test1 a, test2 b, test3 c
where a.pcd= b.pcd
and a.pcd=c.pcd(+)
and a.name='hong'
and b.pid='2345'
order by b.cd, a.id, c.name ;
위와같이 3개의 테이블을 조인해서 결과값이 30만건이 나옵니다.
한 화면에 다 보이기에는 너무 많은 시간이 걸려서
3000건씩 나누어서 페이징을 이용할려고 합니다.
그래서
--------------------------------------------------------------------
select * from (
select rownum rn, a.id, b.cd ,c.name from test1 a, test2 b, test3 c
where a.pcd= b.pcd
and a.pcd=c.pcd(+)
and a.name='hong'
and b.pid='2345'
and rownum<=3000
order by b.cd, a.id, c.name )
where rownum >= 0 ;
빠릅니다.
--------------------------------------------------------------------
select * from (
select rownum rn, a.id, b.cd ,c.name from test1 a, test2 b, test3 c
where a.pcd= b.pcd
and a.pcd=c.pcd(+)
and a.name='hong'
and b.pid='2345'
and rownum<=240000
order by b.cd, a.id, c.name )
where rownum >= 210000 ;
당연한 결과이지만 다음 페이지로 갈수록 늦어집니다.
--------------------------------------------------------------------
좋은 방법이 있을것 같은데...
index + rowid을 이용하는 방법이 있다고 하던데...
index + rowid를 이용할수가 없다면?
어떻게 해야 할까요?
|