我有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查询是什么?
非常感谢
答案 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+'%'