0

次のクエリがあります

 SELECT * FROM A JOIN B ON A.a=B.b JOIN C ON A.a=C.c.

上記のクエリは 100 万行を返し、結果を返すのに多くの時間がかかります。クエリがより速く実行されるように、最初の "N" レコードだけを表示するにはどうすればよいですか。

4

3 に答える 3

2

rownumOracle では、where句に次のように追加するだけです。

SELECT *
FROM A JOIN
     B
     ON A.a = B.b JOIN
     C
     ON A.a = C.c
WHERE rownum < 100;
于 2014-03-04T16:26:11.497 に答える
1

ヒント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) は、このヒントを破棄し、とにかくデータセット全体を収集することを理解する必要があります。それらはそれなしでは機能しません。たとえば、リスト全体が表示されていない場合、データセットをどのように並べ替えるのですか?

于 2014-03-04T16:38:02.910 に答える