ここでクエリを理解するのが難しいです。 私のクエリは最終的に結果セットをレポートに返します。ここでは、パラメータでPersonを指定してデータを表示できます。 DimensionテーブルをEmployeeテーブルに追加して、EmployeeテーブルからNameを返します。これは、このWHERE句のパラメータを使用してクエリがハングアップする
Declare @PM varchar(30)
Set @PM = 'John Smith'
SELECT....FullName, EmployeeID, ....
FROM...
Inner Join EmployeesT on emp.EmployeeNumber = DimP.PersonID
WHERE FullName in (@PM)
ノートのようになります。私のEmployeeテーブルはnvarchar型であり、寸法がvarchar型であるが、私は参加するよう事項がまだ動作していることと思ういけません。
ここでは、テストのために上部にパラメータを設定しました。
ここに私の問題があります:WHERE
節をWHERE DimP.PersonID IN ('12345')
と言い換えると、3秒間実行されます。クエリをWHERE FullName in (@PM)
に変更すると、クエリは永遠に実行されます。それはハングアップし、5つ以上のminuetsのために実行されます。誰も似たような問題を経験しましたか?
結果セットが複数の「人」との正しいデータを生成し、私は一人ではなく、IDを指定することでこれをテストしたいが、私は名前にパラメータを変更したときに、クエリがハングアップ..
パフォーマンスの問題は、テーブルの構造とインデックスに関連しています。また、1つの名前を渡すだけの場合、なぜ単に "WHERE FullName = @ PM"を入れないのですか? – momar
私はこれを試して、同じ問題がありました。以下のCASE文を追加して解決しました。 – Geo
何も返されないようにcaseステートメントが正しいかどうかわからない。おそらく質問に完全な質問を投稿するべきです。また、パフォーマンスの問題は、実行計画が悪いために発生する可能性があります。ここでの議論を参照してください:https://www.brentozar.com/archive/2014/06/tuning-stored-procedures-local-variables-problems/ – momar