0
以下のクエリは、レコード数が膨大なテーブルに対して実行されます.22029464までです。これは実行に約20〜25分ほどかかるものです。これを別の方法で最適化または書き直す範囲はありますか?必要なインデックスがクエリプランが全く欠落インデックスの要件を示していない、すべてのテーブルの上に存在するSQL Serverクエリの最適化 - 2千万レコードのテーブル内のMultiJoins
SELECT stg.*
FROM dbo.s_NIIT_ResultValues stg
WHERE stg.resultId IN (SELECT resultId
FROM Data_NIIT.dbo.NIIT_Results)
AND (stg.resultIntValueId IS NULL
OR stg.resultIntValueId IN (
SELECT resultIntValueId
FROM Data_NIIT.dbo.NIIT_ResultIntValues)
)
AND (stg.resultBoolValueId IS NULL
OR stg.resultBoolValueId IN (
SELECT resultBoolValueId
FROM Data_NIIT.dbo.NIIT_ResultBoolValues)
)
AND (stg.resultStringValueId IS NULL
OR stg.resultStringValueId IN (
SELECT resultStringValueId
FROM Data_NIIT.dbo.NIIT_ResultStringValues)
)
なぜあなたはtoResultIntValues、ResultBoolValues、ResultStringValuesとLEFT JOININGをしていませんか?はるかに効率的で本質的に同じであるように思えますし、読みやすく、理解しやすいです。 – pmbAustin
クエリプラン、テーブル定義、それらのテーブルのすべてのインデックスとキーをお願いします。 「*必須のインデックスはすべてのテーブルに存在し、クエリプランは欠落しているインデックス要件を示していません」という誤った結論です。この特定の決定では、クエリプランの推奨事項は完全ではありません。 – RBarryYoung