SQL Server, где предложение с использованием In () против Wildcard - PullRequest
0 голосов
/ 05 марта 2012

Есть ли разница в производительности между запросом A и запросом B?

Запрос A

SELECT * FROM SomeTable
WHERE 1 = 1 AND (SomeField LIKE '[1,m][6,e][n]%')

Запрос B

SELECT * FROM SomeTable
WHERE 1 = 1 AND (SomeField IN ('16', 'Mens'))

1 Ответ

5 голосов
/ 05 марта 2012

Первый может быть намного медленнее.Индекс не может использоваться с LIKE, если нет постоянного префикса, например LIKE 'foo%'.Поэтому первый запрос потребует сканирования таблицы.Второй запрос, однако, может использовать индекс на SomeField, если он доступен.

Первый запрос также даст неверные результаты, так как он соответствует '1en'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...