Для 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.