Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 LIKE и Index  [new]
Alexander Us
Member

Откуда:
Сообщений: 1132
Ув. коллеги,
не объясните как устроены индексы поддерживающие оператор LIKE?
14 мар 14, 18:51    [15726434]     Ответить | Цитировать Сообщить модератору
 Re: LIKE и Index  [new]
Glory
Member

Откуда:
Сообщений: 104760
Alexander Us
не объясните как устроены индексы поддерживающие оператор LIKE?

Индексы не делятся на поддерживающие и неподдерживающие LIKE
Это условия поиска делятся на применимые к индекам или неприменимые

Сообщение было отредактировано: 14 мар 14, 18:53
14 мар 14, 18:53    [15726442]     Ответить | Цитировать Сообщить модератору
 Re: LIKE и Index  [new]
Alexander Us
Member

Откуда:
Сообщений: 1132
Glory
Alexander Us
не объясните как устроены индексы поддерживающие оператор LIKE?

Индексы не делятся на поддерживающие и неподдерживающие LIKE
Это условия поиска делятся на применимые к индекам или неприменимые


Хорошо,
- LIKE применим всегда например '%ABC%', '%A%C%' или только в определённых случаях например 'ABC%'?
- как обеспечивается поддержка условия поиска LIKE?
14 мар 14, 18:58    [15726485]     Ответить | Цитировать Сообщить модератору
 Re: LIKE и Index  [new]
Glory
Member

Откуда:
Сообщений: 104760
Alexander Us
LIKE применим всегда например '%ABC%', '%A%C%' или только в определённых случаях например 'ABC%'?

Поиск по индексу возможен только для 'ABC%'

Alexander Us
- как обеспечивается поддержка условия поиска LIKE?

Любой поиск по индексу обеспечиватся самой структурой индекса. Хоть LIKE, хоть =, хоть еще что-угодно
14 мар 14, 19:01    [15726504]     Ответить | Цитировать Сообщить модератору
 Re: LIKE и Index  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Alexander Us
Хорошо,
- LIKE применим всегда например '%ABC%', '%A%C%' или только в определённых случаях например 'ABC%'?
- как обеспечивается поддержка условия поиска LIKE?

Судя по формулировке вопроса, вы сами прекрасно занете что и как.

Вас что конкретно интересует, детали?
И что значит "поддержка условия поиска LIKE", ну да, сервер подерживает Like. В любых тех вариантах что вы написали.

И вам уже дали ответ.

Если он не устраивает - конкретизируйте вопрос, возможно дадут более детальный ответ.

В целом чудес не бывает, если справочник организован по "Фамилия, Имя", и вы ищете по "Фамилия" - "Петро%", то можно воспользоваться оглавлением, и найти быстро. А если вы ищете по фамилии "%ов", то придется просмотреть весь справочник.

Другое дело, если вот так: like @some_var - как тут оценить, что к чему, в момент построения плана, но оптимизатор решает эту ситуацию.
Читайте тут.

Еще одно дело - оценки. Как оценить сколько строк будет выбрано когда "%бла%бла%бла%" - и тут тоже есть решение в виде специальных статистик. Читайте тут.

И наконец, если вопрос родился из-за того что медленно ищется по "like '%something%'" то рекомендую загуглить фул текст поиск, либо, если требуется искать по префиксным подстрокам, чего фултекст не умеет, использовать решение описанное в оракловом форуме ask tom, но если что у нас есть и свои кулибины Что делать, когда Full-Text бессилен или зарисовки на тему LIKE '%искомое%'

В общем, вроде я накидал достаточно информации для анализа =)
14 мар 14, 19:30    [15726644]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить