Определение применения составного индекса

Для B-tree запросы 1, 3 и 4 естественно используют ведущий col1; порядок условий AND не важен. Запрос 2 тоже иногда может использовать индекс, но обычно менее эффективно.

Короткий ответ

Что ответить на собеседовании

Для B-tree запросы 1, 3 и 4 естественно используют ведущий col1; порядок условий AND не важен. Запрос 2 тоже иногда может использовать индекс, но обычно менее эффективно.

Подробный разбор

Ответ с пояснениями

Условие

Индекс был объявлен. Укажите, какие из следующих запросов смогут воспользоваться этим составным индексом:

CREATE INDEX IDX_Comp ON Orders (col1, col2);
1. SELECT * FROM Orders WHERE col1 = 1;
2. SELECT * FROM Orders WHERE col2 = 2;
3. SELECT * FROM Orders WHERE col1 = 1 AND col2 = 2;
4. SELECT * FROM Orders WHERE col2 = 2 AND col1 = 1;

Ответ

Для B-tree запросы 1, 3 и 4 естественно используют ведущий col1; порядок условий AND не важен. Запрос 2 тоже иногда может использовать индекс, но обычно менее эффективно.

Без СУБД и плана нельзя гарантировать выбор: даже подходящий индекс может проиграть последовательному чтению. В PostgreSQL возможен проход по индексу без ограничения ведущего поля, а в версии 18 — skip scan при подходящем распределении. Учебное правило левого префикса объясняет эффективный поиск, но не означает абсолютный запрет для запроса 2.

Источник: www.postgresql.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее