私は、100万レコードのOracleデータベースを作成しています。私は最初の「Nを返すSQLクエリを記述しようとしています」ソートされたレコードは、特定の条件に基づいて、データベースから(100件のレコードを言う)。100万件のレコードを含むデータベースから最初の「N」レコードを選択する方法は?
SELECT *
FROM myTable
Where SIZE > 2000
ORDER BY NAME DESC
を次にプログラムで最初のNレコードを選択します。
問題このアプローチである:五十万枚の レコードと「NAME BY ORDER」に
- クエリ結果が すべてのレコードが降順にNAMEでソートされます。このソートは、多くの時間を取っている(ほとんど。 30〜40秒ds。 ORDER BYを省略すると、1秒しかかかりません)。
- ソート後、最初のN(100)レコードだけが に興味があります。したがって、完全なレコードのソートは有用ではありません。
私の質問は以下のとおりです。
- それは クエリ自体に 'N' を指定することは可能ですか? (ソートはNレコードのみに適用され、クエリはより速くなります)。
- 問合せを改善して問合せを改善し、N個の要素のみを返すようにするより良い方法は、 時間です。
それは驚くべきことです! – Oliver