Производительность индекса SQL Azure с аналогичным выражением

У меня есть таблица с текстовым столбцом типа nvarchar (450) , и я создал некластеризованный индекс для этого столбца:

CREATE NONCLUSTERED INDEX [myindexname] ON [myschema].[mytable] 
(
    [mycolumn] ASC
)

Моя проблема возникает при выполнении таких запросов, как:

select 
    .... 
where
    .... 
    mycolumn like '%something%'

Если я попробую запросить без первого%, индекс работает очень быстро, но с начальным% требуется большое количество времени.

Я знаю, что основы индекса рекомендуют не использовать начальные% для клаузулов where, но я не могу удалить их из запросов. Мне было интересно, есть ли возможность улучшить индекс (я не могу изменить запросы прямо сейчас).

Примечание. План объяснения показывает правильный доступ к индексу.

1

2 ответы

Индекс сортируется по столбцу mycolumn в алфавитном порядке. Поэтому, когда вы ищете подстроку с % впереди, механизм запроса должен сканировать всю таблицу/индекс.

Единственный подход к ускорению подобных запросов - использование полнотекстового поиска.

1
добавлено
Поддерживается ли полнотекстовая индексация в SQL Azure?
добавлено автор Jordi, источник
Ах да, вы правы. Но Lucene.NET представляется альтернативой: stackoverflow.com/questions/10985596/…
добавлено автор Jan, источник

Полный текстовый поиск теперь находится в Preview в SQL DB v12. Это отлично подходит для вашего сценария.

0
добавлено
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

dbGeeks
dbGeeks
545 участник(ов)

Чат про базы данных, их устройство и приемы работы с ними. Разрешаются любые адеватные дискуссии в рамках тематики чата.

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

Разработка СУБД
Разработка СУБД
143 участник(ов)