Поделиться через


SR0005: не используйте шаблоны, которые начинаются с "%", в предикатах LIKE

Идентификатор RuleId

SR0005

Категория

Microsoft.Performance

Критическое изменение

Не критическое

Причина

Предикат LIKE из предложения WHERE начинается с подстановочного знака "%".

Описание правила

Использование предложения WHERE, содержащего предикат LIKE наподобие "%строка шаблона", для поиска текста, который может встретиться в любом месте столбца, может привести к сканированию таблицы.

Устранение нарушений

Чтобы устранить эту проблему, необходимо изменить строку поиска таким образом, чтобы она начиналась с символа, который бы не являлся подстановочным знаком (%), либо же следует создать полнотекстовый индекс.

Отключение предупреждений

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

Пример

В первом примере оператор SELECT вызовет сканирование таблицы, поскольку строка поиска начинается с подстановочного знака. Во втором примере оператор вызовет сканирование индекса, поскольку строка поиска не начинается с подстановочного знака. Поиск по индексу извлекает только строки, соответствующие предложению WHERE.

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE '%pples' 

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE 'A%' 

См. также

Основные понятия

Анализ кода базы данных с целью улучшения качества кода