ストアドプロシージャを作成しました。SQLストアドプロシージャの比較回数を減らす
- 最初の一致が会社名や人物名で行われます。以下の
が要件です。
- 一致するものが見つからない場合は、住所、都市名、人名で2番目の一致を行う必要があります。
- 一致するものが見つからない場合、3番目の一致はzipと人名で行う必要があります。私が書いたもの
exec('insert into ProcessedFile_'[email protected] +' ('[email protected]+ ',UploadedB2bFiled_id) select '[email protected] +',B2bFiled_id from UploadedFile_'[email protected]+' a , b2bdb b where ((a.CompanyDomain = b.domain and ISNULL(a.CompanyDomain,'''') <> '''' and a.CompanyDomain is not null and a.Name=b.Name)) group by B2bFiled_id,' + @concatAppendFieldForGroupBy)
exec('insert into ProcessedFile_'[email protected] +' ('[email protected]+ ',UploadedB2bFiled_id) select '[email protected] +',B2bFiled_id from UploadedFile_'[email protected]+' a , b2bdb b where (((a.CompanyDomain is null or a.CompanyDomain !=b.domain) and a.Address1 = b.address and a.City = b.city and a.Name = b.Name)) group by B2bFiled_id,' + @concatAppendFieldForGroupBy)
exec('insert into ProcessedFile_'[email protected] +' ('[email protected]+ ',UploadedB2bFiled_id) select '[email protected] +',B2bFiled_id from UploadedFile_'[email protected]+' a , b2bdb b where ((((a.CompanyDomain is null or a.CompanyDomain !=b.domain) and (a.Address1 = b.address and a.City = b.city and a.Name = b.Name)) and a.Zip = b.Zip and a.Name = b.Name)) group by B2bFiled_id,' + @concatAppendFieldForGroupBy)`
ましたが、(最初のものを除く)それぞれの文で私は会社名を比較して、私が最初のように前に行ったすべてのフィールドを比較しています、とこれは絶対に非効率的です2番目のステートメントでは、これらのフィールド(会社名と人名)を再度比較しています。
これを取り除くにはどうすればよいですか?
あなたが仕事を強いられなかった場合、あなたの質問を読んで(おそらく)助けてくれればもっと回答を得るでしょう。例えば。あなたの文章の始めを大文字にし、読みやすいようにSQLクエリをフォーマットしてください。 –
@AlexInParis申し訳ありません –