SQL查询 - 匹配两个表之间的数据

时间:2016-08-22 12:42:45

标签: sql-server

我有2张桌子,即;

在TableA中,有大约1000万行,
在表B中,大约有500k行

TableA (10million rows)
Url
-------------------------------------------
http://www.example.com/data/tuesday-morning
http://www.example.com/data/wednesday-evening



TableB (500k rows)
Keyword          Value
---------       ----------
Sunday              0
Monday              0
Tuesday             0
Wednesday           0

我想在TableB的{​​{1}}中搜索所有关键字,然后找到匹配的匹配项,以便将TableA更新为Value

我使用MERGE,但问题是进行搜索需要至少10个小时。

我会每天进行搜索,因为KEYWORD每天都在1

进行更新
TableB

在这两个表之间进行最快查找的最佳SQL查询是什么?

非常感谢

1 个答案:

答案 0 :(得分:1)

如果我理解你的Q可能是这个解决方案会对你有所帮助,你可以通过ID或其他方式应用一些WHERE条款,这样你就可以纠正你的记录的第一个应用少量数据然后你可以申请你的所有数据。

 -- declare table1
 declare @table1 table
 (url varchar(max))

 insert into @table1
 values
 ('http://www.example.com/data/tuesday-morning'),
 ('http://www.example.com/data/tuesday-morning'),
 ('http://www.example.com/data/noday-morning')


 -- declare table2
 declare @table2 table
 (keyword varchar(33), val int)

 insert into @table2
 values
 ('monday',0),
 ('tuesday',0)

 -- select
 select * from 
 @table1 t1 join
 @table2 t2 on t1.url like '%'+t2.keyword+'%'

 -- update
 update
 @table2 
 set val =1 
 from 
 @table1 t1 join
 @table2 t2 on t1.url like '%'+t2.keyword+'%'

  -- select again
 select * from 
 @table1 t1 join
 @table2 t2 on t1.url like '%'+t2.keyword+'%'