SQL Server 2005 - выберите записи из таблицы А, содержащиеся в текстовом поле таблицы Б. - PullRequest
1 голос
/ 04 июня 2009

Я пытаюсь разработать SQL Select в MS SQL 2005, чтобы сделать следующее:

TABLE_A содержит список ключевых слов ... спаржа, свекла, бобы, баклажаны и т. Д. (X200). TABLE_B содержит запись с длинным свободным текстом (около 4000 символов) ...

Я знаю, какую запись в TABLE_B я выбираю (byID).

Однако мне нужно получить короткий список записей из TABLE_A, которые содержатся в тексте записи в TABLE_B.

Мне интересно, полезна ли функция SQLs CONTAINS ... но, возможно, нет.

Это должен быть супер быстрый запрос.

Приветствия

Ответы [ 2 ]

2 голосов
/ 04 июня 2009

Это никогда не будет супер быстрым из-за LIKE и подстановочных знаков на каждом конце. Вы не можете индексировать его, и нет никаких хитрых уловок. Однако, поскольку вы уже отфильтровали таблицу B, она должна быть приемлемой. Если бы у вас было миллион строк в таблице B, вы могли бы пойти на кофе, пока он работал

SELECT
    A.KeyWordColumn
FROM
    TableA A
    JOIN
    TableB B ON B.BigTextColumn LIKE '%' + A.KeyWordColumn+ '%'
WHERE
    B.ByID = @ID --or constant etc

CONTAINS можно использовать, если у вас есть полнотекстовая индексация, но не для обычного SQL-запроса

0 голосов
/ 04 июня 2009

Я бы попробовал это

выберите ключевое слово из таблицы_а, таблицы_b где table_b.text как «%» + ключевое слово + «%» и table_b.Id = '111'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...