我正在尝试获取表中的最新行。我有一个简单的时间戳created_at
,它被索引。当我查询ORDER BY created_at DESC LIMIT 1
时,它比我想象的要多得多(我的机器上 36k 行大约需要 50 毫秒)。
EXPLAIN -ing 声称它使用反向索引扫描,但我确认将索引更改为(created_at DESC)
不会更改查询计划器中用于简单索引扫描的成本。
如何优化此用例?
运行 postgresql 9.2.4
。
编辑:
# EXPLAIN SELECT * FROM articles ORDER BY created_at DESC LIMIT 1;
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------
Limit (cost=0.00..0.58 rows=1 width=1752)
-> Index Scan Backward using index_articles_on_created_at on articles (cost=0.00..20667.37 rows=35696 width=1752)
(2 rows)