Как я могу ускорить 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?

Ответы на вопрос(5)

Ваш ответ на вопрос