6

テーブルの最新の行をフェッチしようとしています。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)
4

1 に答える 1