【发布时间】:2016-12-29 01:13:19
【问题描述】:
我知道如果我有两个查询,例如:
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
【问题讨论】:
标签: postgresql indexing postgresql-9.3