【发布时间】:2015-03-01 18:02:57
【问题描述】:
这是桌子
CREATE TABLE material
(
mid bigserial NOT NULL,
...
active_from timestamp without time zone,
....
CONSTRAINT material_pkey PRIMARY KEY (mid),
)
CREATE INDEX i_test_t_year
ON material
USING btree
(date_part('year'::text, active_from));
如果我按中场排序
select mid from material order by mid desc
"Index Only Scan Backward using material_pkey on material (cost=0.29..3573.20 rows=100927 width=8)"
但如果我使用 active_from 进行排序
select * from material order by active_from desc
"Sort (cost=12067.29..12319.61 rows=100927 width=16)"
" Sort Key: active_from"
" -> Seq Scan on material (cost=0.00..1953.27 rows=100927 width=16)"
也许 active_from 的索引错误?如何以更低的成本制作合适的产品
【问题讨论】:
-
最佳索引取决于整个设置和最常见/最重要的查询。我严重怀疑
select * from material order by active_from desc是您要使用的实际查询。没有WHERE条件?对您的 Postgres 版本保密尤其无益。
标签: sql postgresql indexing