テーブルの最新の行をフェッチしようとしています。created_at
索引付けされた単純なタイムスタンプがあります。クエリを実行するORDER BY created_at DESC LIMIT 1
と、思ったよりもはるかに時間がかかります (私のマシンでは 36k 行で約 50ms)。
EXPLAINは逆方向のインデックス スキャンを使用すると主張していますが、単純なインデックス スキャン(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)