Как я могу ускорить row_number в Oracle?
У меня есть запрос SQL, который выглядит примерно так:
SELECT * FROM(
SELECT
...,
row_number() OVER(ORDER BY ID) rn
FROM
...
) WHERE rn between :start and :end
По сути, это часть ORDER BY, которая замедляет ход событий. Если бы я убрал его, стоимость EXPLAIN снизилась бы на порядок (более чем в 1000 раз). Я пробовал это:
SELECT
...
FROM
...
WHERE
rownum between :start and :end
Но это не дает правильных результатов. Есть ли простой способ ускорить это? Или мне придется потратить больше времени с инструментом EXPLAIN?