Почему время запроса так отличается? - PullRequest
0 голосов
/ 11 июня 2019

Этот запрос возвращается очень медленно

SELECT TOP 100 *
FROM MyTable N
WHERE
    (N.[Subject] LIKE '%not_postterm%')
    OR (N.[Content] LIKE '%not_postterm%')
    OR (N.[Subject] LIKE '%not_post_term%')
    OR (N.[Content] LIKE '%not_post_term%')

Но это быстро возвращается

SELECT TOP 100 *
FROM MyTable N
WHERE
    (N.[Subject] LIKE '%postterm%')
    OR (N.[Content] LIKE '%postterm%')
    OR (N.[Subject] LIKE '%post_term%')
    OR (N.[Content] LIKE '%post_term%')

Причина в длине строки между подстановочными знаками?

1 Ответ

1 голос
/ 11 июня 2019

Почему время запроса такое разное?

Оба запроса будут выполнять сканирование таблицы или сканирование индекса, содержащего 4 столбца WHERE-предложения.

Но оба запроса остановятся, как только будет найдена 100-я подходящая строка. Таким образом, распределение и расположение совпадающих строк в сканируемой таблице или индексе будут определять время выполнения этого запроса.

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