我在一个表中有一堆(750K)记录,我必须看到它们在另一个表中.第二个表有数百万条记录,数据如下:
源表
9999-A1B-1234X
,中间部分可能长于三位数
目标表
DescriptionPhrase9999-A1B-1234X(9 pages)
- 是的,parens和单词在字段中.
目前我正在运行一个.net应用程序,它加载源记录,然后运行并搜索类似的(使用tsql函数)来确定是否有任何记录.如果是,则源表更新为正数.如果没有,记录将保持不变.
该应用程序每小时处理大约1000条记录.当我在sql server上作为游标sproc执行此操作时,我的速度几乎相同.
任何想法,如果正则表达式或任何其他方法会使它更快?
如何在数据库中完成所有操作,而不是将记录拉入您的.Net应用程序:
UPDATE source_table s SET some_field = true WHERE EXISTS ( SELECT target_join_field FROM target_table t WHERE t.target_join_field LIKE '%' + s.source_join_field + '%' )
这将减少从750k更新查询到1更新的查询总数.