2016-01-17 2 views
-1

У меня есть следующий запросSQL полнотекстового поиска ключевое слово из столбца таблицы

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) 

и она работает, но это становится действительно тяжелым, когда я достигнет 2 миллионов записей и выше.

Как я могу использовать полнотекстовый поиск и передать ему имя столбца, как первый запрос выше?

спасибо.

Редактировать

не важно найти точное совпадение или нет

+0

Вы хотите, чтобы найти точное совпадение или вы хотите сделать 'полный текст SEARCH' –

+0

@ VR46 Я хочу найти точное соответствие –

+0

Mysql <> Сервер Sql. Какой из них вы используете –

ответ

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); 

Это должно ускорить ery, считая, что 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 
        ); 
+0

Столбцы обеих таблиц имеют один и тот же тип данных, и обе таблицы имеют одинаковую сортировку. temp_names имеет строки дубликатов, должен ли я создать индекс и использовать второй запрос, который вы предоставили, или использовать второй запрос без индексации столбца? –

+0

Вы хотите, чтобы индекс для решения этой проблемы эффективно –

+0

Я получил его, большое вам спасибо, я проверил его сегодня и вернусь к вам. –

Смежные вопросы