我有以下查询
INSERT INTO FirstNames select FirstName from temp_names where not exists
(select FirstName from FirstNames where CONTAINS(FirstName, temp_names.FirstName))
但是我收到错误:'temp_names'附近的语法不正确。
因为由于某种原因无法看到表temp_names。
我尝试使用不包含以下内容的查询:
INSERT INTO FirstNames select FirstName from temp_names where not exists
(select FirstName from FirstNames where FirstName = temp_names.FirstName)
并且它可以工作,但是当我达到200万以上的记录时,它会变得非常沉重。
如何使用全文搜索并将其传递给列名,就像上面的第一个查询一样?
谢谢。
修改
找到完全匹配并不重要
答案 0 :(得分:0)
对于此查询:
INSERT INTO FirstName(FirstName)
select tn.FirstName
from temp_names tn
where not exists (select 1
from FirstNames fn
where fn.FirstName = tn.FirstName
);
您需要FirstName(FirstName)
上的索引:
create unique index unq_firstname_firstname on FirstName(FirstName);
假设FirstName.FirstName
和temp_names.FirstName
具有相同的数据类型和排序规则,这应该会加快查询速度。
注意:如果temp_names
可能有重复项,那么您真的想要:
INSERT INTO FirstName(FirstName)
select distinct tn.FirstName
from temp_names tn
where not exists (select 1
from FirstNames fn
where fn.FirstName = tn.FirstName
);