Предположим, у меня есть два запроса к таблице базы данных.
Запросы определяются в терминах полей, используемых в запросе:
Запрос1: зависит от f1, f2 и f3
Запрос2: зависит от f1, f2, f3 и f4
Я помню, как где-то читал, что механизм SQL-запросов (в данном случае mySQL) анализирует дерево индексов, начиная с самых левых полей в индексе.
Если это правильно, то я предполагаю, что вместо двух индексов, определенных в таблице, как это:
Index 1 (for Query1) : CREATE INDEX idx_1 {f1, f2, f3}
Index 2 (for Query2) : CREATE INDEX idx_2 {f1, f2, f3, f4}
Я могу просто определить один индекс, который содержит объединение ключей, используемых в обоих запросах, т.е.
Мне нужно только определить этот индекс:
(for BOTH Query1) : CREATE INDEX the_idx {f1, f2, f3, f4}
У меня два вопроса:
Правильно ли мое предположение ?. т.е. я могу просто определить один индекс (the_idx) вместо двух предыдущих?
Применимо ли это поведение индекса для механизма запросов PostgreSQL?