/ Изтегляне на страница, съдържаща конкретен ред - oracle, plsql

Извличане на страница, която съдържа конкретен ред - оракул, plsql

Имам процедура, която връща няколко реда нанякои критерии и в конкретен ред. Тези редове са разделени на няколко страници (50 реда на страница). Как мога да извлича всички редове от страница с определен ред. Създадох заявка за заявката, която върши тази работа, но тя не е оптимизирана и има огромно влияние върху производителността. Помогнете ми да я оптимизирам или да я дам алтернатива

select *
from
(
select file_id, row_number() over (order by rownum) rn
from my_table
)
where trunc(rn/50) = (
select trunc(rn/50) from
(select t.*, rownum rn from my_table t)
where file_id = 29987);

Отговори:

0 за отговор № 1

Трябва да го нагласиш малко ...

with tab as
(
-- the
-- row_number() over (order by rownum) rn
-- should be here
select  level + 1000 as val
,       level/50     as rn_50
from    dual
connect by
level < 140
)
, val as
(
select  rn_50
from    tab
where   val = 1004 -- pg 1
--where   val = 1051 -- pg 2
--where   val = 1101 -- pg 3
)
select  *
from    tab t
where   rn_50 >= (select floor(rn_50) from val)
and     rn_50 <= (select ceil (rn_50) from val)
;