インデックスのない列で注文された大きなテーブルとクエリがあります。 私はページングのための行が必要なので、最初のN行を最初に、そしておそらく次のN行を意味するので、カーソルを宣言します。ヒントOPTION(FAST n)は私のために何の違いもありません
DECLARE cur CURSOR FOR select TOP(@N) col1,col2 from table order by col2;
私がしました:私は例えば、私がTOP(N)を言うならば、それは非常に速く、それをバック与えるので、SQL Serverが速い最初のN行を与えるために最適化することができることを知って
DECLARE cur CURSOR FOR select col1,col2 from table order by col2;
私は高速の最初のN行を与えるために、サーバーを頼むことができることを読んでいないので、私はそれを試してみた:
DECLARE cur CURSOR FOR select TOP(@N) col1,col2 from table order by col2 OPTION (FAST @N);
残念ながら何の効果も、それがヒントなしのように遅いですすなわち。 なぜですか? どうすれば解決できますか?
正確ではありません。テーブルは1秒以内に読み取ることができます。カーソルが5秒後に記録を開始します。例えば私に尋ねるならTOP(10)、それは非常に速く戻る。読取り行のcol2にNULL値がある場合、順序付けられた結果セットに入れることができます。私が単にカーソルなしでクエリを実行すると、それはカーソルからどのようにしたいのですか? – quantummind
私はあなたがそこに何を言っているのかは分かりませんが、おそらくあなたはその質問に新しい情報を与えることができます。既に述べたように、FASTは特定の状況でのみ違いを生みます。私は、FASTの有無にかかわらずクエリプランをチェックすることをお勧めします(そして、違いはないでしょう) –