私は、procで動作するtempテーブルに異なるdbsのいくつかの異なるテーブルから選択するストアドプロシージャを作成しました。テーブルを埋めることですべてがうまくいくようです。私が参加しようとすると、私の問題が発生します。これは私が書いたクエリです:SQLクエリの実行が停止しない
SELECT #temp1.id,
#temp2.first_name,
#temp2.last_name,
#temp3.DOB,
#temp4.Sex,
#temp5.SSN
FROM (((#temp1
LEFT JOIN #temp3 ON #temp1.id = #temp3.id)
LEFT JOIN #temp4 ON #temp1.id = #temp4.id)
LEFT JOIN #temp2 ON #temp1.id = #temp2.id)
LEFT JOIN #temp5 ON #temp1.id = #temp5.id;
クエリはある程度機能します。出力ウィンドウには選択結果が入力されます。問題は、クエリが終了しないことです。新しいレコードを出力に追加することを停止しますが、実行を続行するため、次のステートメントに移動できないため、プロシージャがハングします。何か案は?
一度に1つの結合を実行して、特定の結合がハングアップしているかどうかを確認してください。 「ハングアップ」したときに返される必要があるすべてのレコードが返されることを確認できますか?各テーブルのレコード数IDはすべてのテーブルで一意ですか?重複がある場合、返されるレコードの数は非常に大きくなる可能性があります。これらの質問に答えて、ここであなたを手伝うのがより簡単になるかもしれません。列名と型も同様に役立ちます。 –
クエリが終了しないとはどういう意味ですか?照会が完了していない場合は、照会に問題がある可能性があります。 –
実際の実行計画を見ましたか?もう一つは、ストアドプロシージャを再コンパイルすることです。データベースがデータまたは構造に重大な変更を加えた場合、プロシージャを再コンパイルすると、プロシージャのクエリプランが更新され、それらの変更が最適化されます。これにより、プロシージャの処理性能を向上させることができます。 –