【发布时间】:2016-08-22 12:42:44
【问题描述】:
我有 2 张桌子,即;
在 TableA 中大约有 1000 万行,
在 TableB 中大约有 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
我想在TableA中搜索TableB中的所有关键字,并找到匹配项,将它们的Value更新为1。
我使用 MERGE,但问题是搜索至少需要 10 个小时。
我会每天进行搜索,因为 TableB 中的关键字每天都会更新
MERGE INTO TableB As TB
USING (Select Url From TableA) As TA
ON TA.Url LIKE 'http://www.example.com/data/'+TB.Keyword+'-%'
WHEN MATCHED THEN
UPDATE SET TB.Value=1;
在这两个表之间进行最快查找的最佳 SQL 查询是什么?
非常感谢
【问题讨论】:
-
摆脱
(Select Url From TableA),这肯定会减慢您的查询速度,只使用TableA -
使用这一行金额的唯一方法 - 使用全文索引。也就是说 - 采用 tinka (stackoverflow.com/a/39080778/2746150) 下面提出的方法,但您必须将
like '%'+t2.keyword+'%'替换为特定于全文索引的语言结构,这样更快。
标签: sql-server