4

SQLクエリでOPTION(FAST n)を使用することの欠点を教えてもらえますか?

たとえば、100,000レコードをすばやく取得しますが、これはSQL Serverの他のプロセスに影響しますか?


私は自分の問題に少し近づいています。

毎週データ処理を実行する必要があります。したがって、最初の結果は5〜7秒後に表示され、次にこれらの結果に対してデータ処理を行います。結果は通常、数千行で構成されます。そして、すべての行が処理されるのに数秒かかります。通常、プロセスは結果全体がそこにあるのを待ってから、処理を開始します。結果はデー​​タセットに出力されます(私はc#コンソールアプリを使用しています)。したがって、上位10の結果をすばやく出力して、プロセスをすぐに開始し、残りの行を出力してキューに追加します。そこの順番を待ちます。

どうすればこれを行うことができますか。

ありがとう

4

1 に答える 1

10

Option fastは、クエリオプティマイザにクエリの合計実行時間を最適化しないように強制しますが、最初のN行をフェッチするのにかかる時間です。

結合する100万行のテーブルが2つある場合、標準のクエリプランは、一方のテーブルのハッシュマップ(百万行の一時テーブル)であり、もう一方のテーブルでハッシュマップルックアップを使用します。

100万行のハッシュマップを構築する作業は、ネストされたループの高速な10ステップよりもかなり多いため、高速な10の最適化ではおそらくネストされたループを使用するだけです。結局100万行の場合、ネストされたループは3倍長くかかる可能性がありますが、高速10では、それらの10をより速く取得できます。(この例では、適切なインデックスが存在することを前提としています)

于 2014-05-29T04:48:42.267 に答える