Ответ 1
я хотел бы использовать
WHERE columnName LIKE '%[%]%'
SQL Server хранит сводную статистику строк для использования при оценке количества строк, которые будут соответствовать предложению LIKE
. Оценки мощности могут быть лучше и привести к более подходящему плану при использовании синтаксиса в квадратных скобках.
Ответ на этот элемент подключения
У нас нет поддержки точной оценки количества элементов в присутствии определенных пользователем escape-символов. Таким образом, мы, вероятно, получаем плохую оценку и плохой план. Мы рассмотрим этот вопрос в следующем выпуске.
Пример
CREATE TABLE T
(
X VARCHAR(50),
Y CHAR(2000) NULL
)
CREATE NONCLUSTERED INDEX IX ON T(X)
INSERT INTO T (X)
SELECT TOP (5) '10% off'
FROM master..spt_values
UNION ALL
SELECT TOP (100000) 'blah'
FROM master..spt_values v1, master..spt_values v2
SET STATISTICS IO ON;
SELECT *
FROM T
WHERE X LIKE '%[%]%'
SELECT *
FROM T
WHERE X LIKE '%\%%' ESCAPE '\'
Показывает 457 логических чтений для первого запроса и 33,335 для второго.