2012-04-03 7 views
-2

私は、その10,000行以上を満たすテーブルを持っています。私は一定の条件に基づいてLIFOマッチアップをしようとしています。要件に基づいてインデックスを追加しました。クエリはwhileループ内にあり、ループを通ってマッチアッププロセスを終了します。私はカーソルを使用することができません。その理由は、ロジックに基づいてレコードが異なる可能性があるからです。 whileループ内のプロセスは致命的に遅いです。 whileループを回避できる方法があるかどうかを教えてください。 また、一時テーブルにインデックスを作成する際に問題があるかどうか、削除クエリによってテーブルのインデックスが変更されるかどうかを教えてください。スマーティーズのためWhileループを固定する方法

+2

あなたがより多くの詳細を提供するために必要になるがあります。 whileループはどこですか?クライアントは繰り返しクエリを呼び出しますか?そのループ基準は何ですか?クエリはどのように見えますか? –

答えて

0

ジョー・セルコの本SQL:高度なSQLプログラミングは、第19章でFIFOとLIFOサブセット上のセクション

+0

混乱して申し訳ありません。 whileループはストアドプロシージャ内にあります。ループは、tempテーブルのすべてのレコードを繰り返し処理します。フラグがあり、その値は 'N'でなければなりません。フラグはフラグの値が 'N'になるまでループします。スクリプトは、マッチで終わるtempテーブルからレコードを削除します。したがって、最後にフラグを 'Y'に設定し、ループを終了します。 –

+0

低速ストアドプロシージャのTSQLコードを投稿すると、最適化を支援することができます。おそらくランキング機能や再帰的なCTEを使用して改善されました。 –

関連する問題