次のような SQL クエリがあります。
SELECT * FROM(
SELECT
...,
row_number() OVER(ORDER BY ID) rn
FROM
...
) WHERE rn between :start and :end
基本的に、速度を低下させているのは ORDER BY 部分です。これを削除すると、EXPLAIN のコストが 1 桁 (1000 倍以上) 下がります。私はこれを試しました:
SELECT
...
FROM
...
WHERE
rownum between :start and :end
しかし、これでは正しい結果が得られません。これを高速化する簡単な方法はありますか?それとも、EXPLAIN ツールにもう少し時間を費やす必要がありますか?