SQL
1SELECT A.代理店コード, F.代理店名, A.お客様コード, G.お客様名 2FROM トランザクション A 3LEFT OUTER JOIN NDSS.[dbo].[代理店マスタ] F ON F.代理店コード=A.代理店コード 4LEFT OUTER JOIN NDSS.[dbo].[お客様マスタ] G ON G.お客様コード=A.お客様コード 5WHERE (F.代理店コード IS NOT NULL AND F.削除フラグ<>'D') AND (G.お客様コード IS NOT NULL AND G.削除フラグ<>'D')
Aをベースに、関連づけられた参照マスタ2種類がある発行ですが
・参照マスタ側は 必ずしもAに関連づけられた レコードがあるとは 限らない
・どちらかの参照マスタで、削除が宣言されていたら、発行結果=行を得ない
要件を達成したく、現況上記のようなSQL文になっています。
しかし 結構スピードが遅く感じています。
###質問
SQL
1SELECT X.代理店コード, X.代理店名, X.お客様コード, X.お客様名 FROM 2(SELECT A.代理店コード, F.代理店名, ■F.削除フラグ AS 削除フラグF, A.お客様コード, G.お客様名, ■G.削除フラグ AS 削除フラグG 3FROM トランザクション A 4LEFT OUTER JOIN NDSS.[dbo].[代理店マスタ] F ON F.代理店コード=A.代理店コード 5LEFT OUTER JOIN NDSS.[dbo].[お客様マスタ] G ON G.お客様コード=A.お客様コード)) X 6WHERE (X.削除フラグF<>'D') AND (X.削除フラグG<>'D')
上記のようにSQL文を組みなおすことで スピード向上は 期待できるのでしょうか? <==== スピード向上が果たされるとしても
削除フラグを含めるためだけに 元のSQL文をまるっと 副問い合わせにするような手立てが 恥ずかしい解決策でないか
不安に思いましたので 本問い合わせに至りました
ご見解いただけたら 幸いです。
回答2件
あなたの回答
tips
プレビュー