計算とエントリの量が原因でタイムアウトになるため、現在、ストアドプロシージャを最適化しています。
しかし、状況はよくわかりません。8つの一時テーブル(データベース内の他のデータから情報を取得する)を使用するのが最善ですか、それともデータベースのデータをさまざまな変数に入れてそれらにアクセスするのが最善ですか?
タイムアウトの問題を修正するために最高のパフォーマンスを提供するのはどれですか?
計算とエントリの量が原因でタイムアウトになるため、現在、ストアドプロシージャを最適化しています。
しかし、状況はよくわかりません。8つの一時テーブル(データベース内の他のデータから情報を取得する)を使用するのが最善ですか、それともデータベースのデータをさまざまな変数に入れてそれらにアクセスするのが最善ですか?
タイムアウトの問題を修正するために最高のパフォーマンスを提供するのはどれですか?
「一時」テーブルにあるエントリの数によって異なります。
実際の一時テーブル#temp
にはインデックスを定義することができ、行数などについて SQL Server によって分析され、トランザクションに参加します。たとえば、行を挿入してからロールバックすると、それらの行はあなたのテーブルから「消える」でしょう。一時テーブル
テーブル変数@temp
は常に、SQL Server によって正確に 1 つの行を持つと見なされます。そこに少数の行しかない場合、これは問題ではありません。ただし、何百もの行を格納する必要がある場合、SQL Server クエリ オプティマイザーによるこの想定により、非常に非効率的なクエリ プランが作成される可能性があります。また、テーブル変数はトランザクションに参加しません。環境によっては、良いことも悪いこともあります。
上記の回答に基づいて、必ず一時テーブルを使用する必要があります。また、パフォーマンスを向上させるために、それらのインデックスを作成することも検討する必要があります。