タイトルが示すように、251 件の結果を返すと 5 秒で返される非常に単純な Oracle クエリがあります。私は SQL Developer を使用しており、組み込みの接続ユーティリティを使用してアタッチしています (このアプリケーションには ODBC 接続の機能はありません)。
ここにあるクエリは高速です (十分に高速です) (pa_stu は約 40k 行を保持します)。
Select * From pa_stu Where rownum < 252;
SQL Developerによると、Oracleは.521秒でデータを返します。
次のクエリと、より大きなデータ セットを取得するクエリが原因です。
Select * From pa_stu Where rownum < 253;
SQL Developer によると、Oracle は最後のデータを 5.327 秒で返します。
テストに使用されているすべてのクエリには、同じ説明計画があります。つまり、ROWNUM<251 のフィルター述部 (251 を使用されている任意の数に変更) と FULL の TABLE ACCESS です。
上記の結果は一貫しており、さらに、評価された数値を約 1000 に上げると、結果時間が 2 倍の約 10 秒になります (一貫して)。どこかで何らかのバッファリングが行われており、そのバッファが小さすぎるようです。さらに、これは 1 つの Oracle サーバーでのみ発生しています。もう 1 つの、より使用頻度の高いもの (異なるデータも保持) は、同様のステートメントを使用して何十万ものレコードを問題なく返します。
データベースは DBA によって管理されており、私はすべて DBA によって実行されました。彼女には解決策がありません。これは実際には 1 か月ほど前に発生し始めましたが、意味がある場合、何か月も前にはそうではありませんでした。今ほど目立たなかった。
助けてくれてありがとう。