我创建了一个存储过程。减少SQL存储过程中的比较次数
以下是要求:
- 首场比赛是在公司名称和人名做。
- 如果找不到匹配,则应在地址,城市和人名中进行第二次匹配。
- 如果找不到匹配,则应在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)`
但是,这是绝对的低效率,在每个语句(除了第一个),我比较所有的字段我在之前做了第一个我比较公司名称和人名和第二个陈述我再次比较这些领域(公司名称和人名)。
如何摆脱这个?
如果您不强迫我们工作,只是为了能够阅读您的问题并(可能)帮助您,您会得到更多回复。例如。在句子的开头大写,并格式化SQL查询以便读取。 – 2012-04-05 07:42:53
@AlexInParis对不起 – 2012-04-05 07:46:10