Я знаю, что если у меня есть два запроса, как:Postgresql дизайна индекса: комбинированные индексы упорядоченных
SELECT * FROM fruits WHERE type='apple'
и
SELECT * FROM fruits WHERE type='orange' AND state='rotten'
тогда эффективный показатель будет:
CREATE INDEX type_state_index_on_fruits ON fruits(type, state) USING btree;
С он сможет использовать индекс как для первого, так и для второго запроса.
Однако то, что происходит, если сортировка происходит в этом:
SELECT * FROM fruits WHERE type='orange' AND state='rotten' ORDER BY picked_at ASC
Могу ли я эффективно создать упорядоченный индекс типа и состояния, но упорядоченный по picket_at, так что база данных не придется делать сортировку после выборки строки в обоих случаях:
SELECT * FROM fruits WHERE type='apple' ORDER BY picked_at ASC
SELECT * FROM fruits WHERE type='orange' AND state='rotten' ORDER BY picked_at ASC
[Проверить план выполнения] (https://www.postgresql.org/docs/current/static/sql-explain.html) –