Будет ли индекс SQL работать для следующего сценария - PullRequest
0 голосов
/ 05 ноября 2019

Таблица A Со столбцом (Col1, Col2, Col3, Col4), имеющим кластерный индекс PK для Col1, Col2, Col3. Поможет ли этот индекс при поиске по Col1, Col2, Col4?

1 Ответ

0 голосов
/ 08 ноября 2019

Теоретически, если существует индекс для (Col1, Col2, Col3), запрос, который ищет (Col1, Col2, Col4), должен иметь возможность искать индекс для Col1 и Col2. Я ожидал бы, что механизм базы данных затем вернет все соответствующие строки на другой шаг, который фильтрует результирующие строки в Col4.

На практике фактическая реализация будет зависеть от механизма базы данных. Это может быть запрос, пропускающий использование индекса полностью и сканирующий таблицу, если стоимость сканирования таблицы намного меньше, чем поиск по индексу. Если оптимизатор запросов знает, что Col1 очень уникален, оптимизатор запросов может использовать Col1 в качестве единственного предиката поиска и использовать другой шаг в плане запроса для фильтрации совпадающих строк по Col2 и Col4.

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