簡體   English   中英

分析查詢postgres

[英]analyze a query postgres

我在下面有一個查詢,我可以知道需要做什么才能將執行時間從 18 秒減少

查詢

SELECT DISTINCT ON (player_name) server_name, player_anme, logged_at, joined_at 
FROM player_cache 
WHERE server_name ILIKE '{query[0]}' 
AND logged_at > (now() - interval '{history} hour') 
ORDER BY player_name,logged_at desc;

執行計划

Unique (cost=14326.21..14326.25 rows=7 width=82) (actual time=18907.017..18907.049 rows=32 loops=1)
  -> Sort (cost=14326.21..14326.23 rows=7 width=82) (actual time=18907.015..18907.023 rows=81 loops=1)
    Sort Key: player_name, logged_at DESC
    Sort Method: quicksort Memory: 36kB
  -> Index Scan using idx_logged_at on player_cache (cost=0.56..14326.11 rows=7 width=82) (actual time=5.605..18906.463 rows=81 loops=1)
    Index Cond: (logged_at > (now() - '30:00:00'::interval))
    Filter: ((server_name)::text ~~* 'Server-1'::text)
    Rows Removed by Filter: 79825
Planning Time: 0.665 ms
Execution Time: 18907.108 ms

您可以創建一個trigram 索引來加速ILIKE條件:

CREATE EXTENSION IF NOT EXISTS pg_trgm;

CREATE INDEX ON player_cache USING gin (server_name gin_trgm_ops);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM