Эффективный способ запроса поля Varchar с разделителями в SQL - PullRequest
1 голос
/ 15 июля 2009

У меня есть таблица SQL Server 2005 с полем varchar (250), в котором содержатся ключевые слова, которые я буду использовать для поиска. Я не могу изменить дизайн. Данные выглядят так ...

Личные, Имущество, Стоимость, Одобрение

Какой самый эффективный способ запуска поисковых запросов по этим ключевым словам? Единственное, о чем я могу думать, это ...

WHERE Keywords LIKE '%endorse%'

Ответы [ 3 ]

4 голосов
/ 15 июля 2009

Так как нормализация не является опцией, следующим лучшим вариантом будет настройка и использование полнотекстового поиска. Это позволит поддерживать внутренний поисковый индекс, который позволит вам легко выполнять поиск в ваших данных.

Проблема с такими решениями, как LIKE '% pattern%', заключается в том, что это приведет к полному сканированию таблицы (или, возможно, полному сканированию индекса), которое может привести к блокировке большого объема данных в вашей таблице, что приведет к замедлению любые операции, попавшие в рассматриваемый стол.

1 голос
/ 15 июля 2009

самый эффективный способ - нормализовать ваш дизайн БД. никогда не храните значения CSV в одной ячейке. кроме использования, как вы могли бы рассмотреть полнотекстовый поиск.

0 голосов
/ 15 июля 2009

Вы можете использовать PATINDEX ()

USE AdventureWorks;
GO
SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
GO

http://msdn.microsoft.com/en-us/library/ms188395%28SQL.90%29.aspx

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