Почему создание некластеризованного индекса замедляет поиск данных? - PullRequest
0 голосов
/ 26 сентября 2018

Насколько я понимаю, индексирование улучшает скорость поиска данных.

В этом случае немного запутался и хочу обратиться за советом.У меня есть таблица с миллионами записей.Для извлечения данных с помощью запроса select и предложения where требуется пример 90 секунд:

SELECT EMPID, FNAME, LNAME, ADDRESS, PHONE
FROM TBLEMPLOYEES
WHERE LNAME='ABBA'

Когда я создаю некластеризованный индекс для этого столбца (LNAME), а затем запускаю тот же оператор select,запрос занимает 300 секунд при первом выполнении.На последующих запусках это занимает около 10 секунд.Я полагаю, что это улучшение после второго выполнения связано с концепцией кэширования?

Когда я повторно запускаю тот же оператор выбора, но на этот раз с другим ключевым словом поиска - пример:

SELECT EMPID, FNAME, LNAME, ADDRESS, PHONE
FROM TBLEMPLOYEES
WHERE LNAME='FERNS'

Запрос снова занимает около 300 секунд.В следующий раз, когда я выполню тот же запрос, это займет около 10 секунд.

Так гарантируется ли преимущество от индексации или они применимы только при последующем выполнении соответствующих запросов?Здесь немного запутано, почему только последующее выполнение запроса приводит к быстрому извлечению данных.

1 Ответ

0 голосов
/ 26 сентября 2018

Я подозреваю, что созданный вами индекс находится только на LNAME, например

CREATE INDEX IX_LNAME ON TBLEMPLOYEES (LNAME)

Если вы создаете индекс, который включает или охватывает столбцы в SELECT, например,

CREATE INDEX IX_LNAME ON TBLEMPLOYEES (LNAME) INCLUDE (EMPID, FNAME, ADDRESS, PHONE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...