次のクエリがあります
SELECT * FROM A JOIN B ON A.a=B.b JOIN C ON A.a=C.c.
上記のクエリは 100 万行を返し、結果を返すのに多くの時間がかかります。クエリがより速く実行されるように、最初の "N" レコードだけを表示するにはどうすればよいですか。
次のクエリがあります
SELECT * FROM A JOIN B ON A.a=B.b JOIN C ON A.a=C.c.
上記のクエリは 100 万行を返し、結果を返すのに多くの時間がかかります。クエリがより速く実行されるように、最初の "N" レコードだけを表示するにはどうすればよいですか。
rownum
Oracle では、where
句に次のように追加するだけです。
SELECT *
FROM A JOIN
B
ON A.a = B.b JOIN
C
ON A.a = C.c
WHERE rownum < 100;
ヒントfirst_rowsを使用できます。
SELECT /*+ FIRST_ROWS(100) */ * FROM A JOIN B ON A.a=B.b JOIN C ON A.a=C.c
また、Aa、Bb、Cc にインデックスがあるかどうかも確認してください
さらに、任意のsorting( order by
)、または分析関数、またはgroup by
操作、またはdistinct
(データセット全体を要求する何か、UNION
または などINTERSECT
) は、このヒントを破棄し、とにかくデータセット全体を収集することを理解する必要があります。それらはそれなしでは機能しません。たとえば、リスト全体が表示されていない場合、データセットをどのように並べ替えるのですか?