PostgreSQL 排序索引

PostgreSQL 排序索引

    最新順(desc)でソートするクエリの場合、応答時間高速化の効果が期待できる

要求

psql (9.3.2)可以进行简要叙述。

创建索引

CREATE INDEX idx_hoge_code_desc ON hoge(code DESC);
    • hoge に対して、テーブルロック が発生するので、サービス停止中等に実行するのがベター

レコードの多いテーブル の場合、実行時間が長時間かかる可能性があるので、事前に同じデータのDBを同等スペックの別サーバ等に準備して、時間を予測しておく。キャッシュは恐らく実行時間には影響しなさそう。
途中で止めたい場合は Ctrl + c でキャンセル可能、恐らく問題ない

如果需要创建或删除索引

DROP index idx_hoge_code_desc;

确认 (què

# \d hoge
                                        Table "public.hoge"
     Column     |            Type             |                        Modifiers
----------------+-----------------------------+---------------------------------------------------------
 code           | integer                     | not null default nextval('hoge_code_seq'::regclass)
 …
Indexes:
    "idx_hoge_code_desc" btree (code DESC)
# \d idx_hoge_code_desc
Index "public.idx_hoge_code_desc"
     Column     |  Type   |   Definition
----------------+---------+----------------
 code           | integer | code
 …
btree, for table "public.hoge"

DESC の情報が表示されない… 確認する方法知ってる方いらっしゃったら教えてください

索引前后的统计数据对比。

    インデックス作成 前
# explain analyze select * from hoge where order by code desc limit 50;
                                                                           QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.44..2146.45 rows=50 width=44) (actual time=6797.790..6822.734 rows=50 loops=1)
   ->  Index Scan Backward using hoge_pkey on hoge  (cost=0.44..1418472.53 rows=33049 width=44) (actual time=6797.787..6822.728 rows=50 loops=1)
   …
 Total runtime: 6822.785 ms
    インデックス作成 後
# explain analyze select * from hoge where order by code desc limit 50;
                                                                           QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.56..44.30 rows=50 width=44) (actual time=0.089..0.221 rows=50 loops=1)
   ->  Index Scan using idx_hoge_code_desc on hoge  (cost=0.56..28818.94 rows=32950 width=44) (actual time=0.086..0.206 rows=50 loops=1)
 Total runtime: 0.279 ms

早上好

广告
将在 10 秒后关闭
bannerAds