SELECT * FROM (
select *
from tableA
where ColumnA = 'randomText'
ORDER BY columnL ASC
) WHERE ROWNUM <= 25
このクエリを実行すると、Oracle の最適化により、クエリの実行に約 14 分かかります。where句を削除すると、クエリは数秒で実行されます。上記のものを含め、テーブルのほとんどの列にはインデックスがあります。休止状態を使用しているため、クエリの構造にあまり柔軟性がありません。
このクエリもすぐに結果を返し、正しい結果が返されます。
SELECT *
FROM (
select *
from tableA,
dual
where ColumnA = 'randomText'
ORDER BY columnL ASC
) WHERE ROWNUM <= 25
休止状態を使用してできることはありますか?
更新: 私は EntityManager.createQuery() を使用し、setMaxResults(25) と setFirstResult() も使用します。上記のクエリは、ログを観察すると、休止状態のクエリがどのように見えるかです