-1

我有以下查询

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 万条及以上的记录时,它变得非常沉重。

如何使用全文搜索并将列名传递给它,就像上面的第一个查询一样?

谢谢你。

编辑

是否找到完全匹配并不重要

4

1 回答 1

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.FirstNametemp_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
                     );
于 2016-01-17T12:51:40.130 回答