Я использую SQL Server 2016 Express и приложение Java с драйвером JDBC версии 4.2.
Моя база данных имеет сопоставление Latin1_General_CI_AS
(без учета регистра). В моей таблице есть столбец типа VARCHAR(128) NOT NULL
. В этом столбце есть уникальный индекс.
Мой тестовый сценарий выглядит следующим образом:
После вставки 150000 строк длиной 48 символов я делаю 200 выборок случайно выбранных существующих строк. Я измеряю общее время выполнения всех запросов.
Затем я удаляю индекс, изменяю таблицу, чтобы изменить сопоставление столбцов на Latin1_General_CS_AS
(с учетом регистра) и снова создаю уникальный индекс.
Тогда 200 выборок занимают больше времени.
В обоих случаях (CI и CS) планы выполнения просты и идентичны (поиск по индексу).
Время выполнения запроса зависит не только от чувствительности к регистру. При сопоставлении CS он растет быстрее, если строки имеют одинаковые префиксы. Вот мои результаты (время выполнения в секундах):
+----+---------+------------------+-------------------+-------------------+
| + RND(48) + CONST(3)+RND(45) + CONST(10)+RND(38) + CONST(20)+RND(28) +
+----+---------+------------------+-------------------+-------------------+
| CI + 6 + 6 + 7 + 9 +
| CS + 10 + 20 + 45 + 78 +
+----+---------+------------------+-------------------+-------------------+
Чем длиннее идентичный префикс случайных строк, тем больше времени занимают запросы с учетом регистра.
- Почему поиск в столбце без учета регистра выполняется быстрее, чем в столбце с учетом регистра?
- В чем причина одинакового поведения префикса?
search by using the index
? Сканирование индекса выполняется медленно, а поиск по индексу выполняется быстро. Публикация запросов и планов выполнения - person Panagiotis Kanavos   schedule 15.05.2018it grows faster if the strings have identical prefixes
? Вы не можете использовать индекс для поиска в середине поля, например, с помощьюLIKE
%whatever``. Только запросы, соответствующие префиксу, могут использовать индекс, т.е.LIKE 'whatever%'
. Использует ли какой-либо запрос индекс? - person Panagiotis Kanavos   schedule 15.05.2018