Сравнение строк сервера SQL - PullRequest
0 голосов
/ 21 апреля 2009

Есть ли какая-либо информация о том, как SQL Server сравнивает строки и обрабатывает их поиск (например, статистику)? Я пытаюсь выяснить, есть ли способ определить, насколько эффективно хранить информацию в виде большой строки и использовать сервер SQL для выполнения ряда сравнений строк, чтобы определить, какое совпадение. Я знаю, что это потенциально будет медленно (каждая строка информации будет иметь длину 2400 символов), но мне нужно кое-что уточнить, как сравнивается строка, чтобы я мог показать ее эффективность (или неэффективность).

Ответы [ 5 ]

2 голосов
/ 21 апреля 2009

каждая строка информации будет иметь длину 2400 символов

Точно 2400? Итак, у вас есть поля фиксированной ширины? Сэкономьте свое время и просто разбейте его на отдельные столбцы. Вы будете благодарить себя позже.

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

0 голосов
/ 17 июля 2012

В статье MSDN о полнотекстовых поисках выявляется следующее о том, как предикат LIKE использует шаблоны символов.

Сравнение LIKE с полнотекстовым поиском

В отличие от полнотекстового поиска, предикат LIKE Transact-SQL работает только на характер персонажей. Кроме того, вы не можете использовать предикат LIKE для запрос отформатированных двоичных данных. Кроме того, как запрос против большого объем неструктурированных текстовых данных намного медленнее, чем эквивалент полнотекстовый запрос к тем же данным. Как запрос против миллионов из строк текстовых данных может потребоваться минуты для возврата; тогда как полный текст запрос может занять всего несколько секунд или меньше для тех же данных, в зависимости на количество возвращаемых строк.

0 голосов
/ 22 апреля 2009

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

0 голосов
/ 21 апреля 2009

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

0 голосов
/ 21 апреля 2009

поиск в них будет медленным, потому что вы не сможете создать индекс, так как индекс не может быть длиннее 900 байт / шириной

Я бы сделал то, что предлагает Джоэл Кохорн, и разделил бы его на колонки

Вы также можете разделить его на несколько таблиц, поскольку вы можете хранить только 3 строки на странице с 2400 символами на строку

...