Составной индекс B+дерева можно использовать только для фильтрации запросов по левому префиксу его столбцов — ведущему столбцу или ведущим столбцам по порядку. Фильтрация запросов только по неведущему столбцу не позволяет эффективно использовать индекс, что является основной причиной ошибок типа «У меня есть индекс, но он не используется».
Пример
CREATE INDEX idx_orders_customer_status ON orders (customer_id, status);
-- Uses the index (matches the leading column, or both)SELECT*FROM orders WHERE customer_id =42;
SELECT*FROM orders WHERE customer_id =42AND status ='shipped';
-- Cannot use this index efficiently (status isn't a leading column)SELECT*FROM orders WHERE status ='shipped';
Итог
Составной индекс B+дерева можно использовать только для фильтрации запросов по левому префиксу его столбцов — ведущему столбцу или ведущим столбцам по порядку.
Почему порядок столбцов имеет значение в составном индексе? · Sobeso