2つのアプリケーションがあります。最初のアプリケーションはテーブルMyTableにデータを挿入します。2つ目は、テーブルMyTableの行をチャンクで読み取ります。たとえば、読み取りごとに1000行とします。この2番目のアプリは、データを時系列で読み取り、次のようなクエリを使用する必要があります。
SELECT
C1,
C2
FROM
(
SELECT
rownum AS RowNumber,
C1,
C2
FROM
MyTable
WHERE
C3 = :C3
AND IsProcessed = 0
ORDER BY
Timestamp
) temp
WHERE
temp.RowNumber <= 1000
クエリは機能しますが、処理されていない行が多数(たとえば、1,000万)テーブルMyTableで待機している場合は、処理が遅くなります(1分以上、通常は実行に数秒しかかかりません) 。Oracleは最初に関連するすべての行を時系列で並べ替える必要があるため、これは正常だと思います...したがって、私の質問は次のとおりです。このクエリを作成するためのより良い方法はありますか?