bad join performance - Mailing list pgsql-performance
From | pginfo |
---|---|
Subject | bad join performance |
Date | |
Msg-id | 3F40E9A9.12AE5D55@t1.unisoftbg.com Whole thread Raw |
Responses |
Re: bad join performance
Re: bad join performance |
List | pgsql-performance |
Hi , I am using pg 7.3.3 on RH 7.3, dual Athlon 1 GB RAM. I have 2 tables a_acc and a_vid_doc (all PK are int). sizes: select count(IDS) from a_acc; count --------- 1006772 select count(IDS) from a_vid_doc; count ------- 25 I have problem with the join ot this tables. I tryed this examples: explain analyze select G.IDS from A_ACC G join A_VID_DOC VD ON(G.IDS_VID_DOC=VD.IDS) WHERE G.IDS = 1338673 ; QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------- Merge Join (cost=1.83..1.97 rows=1 width=12) (actual time=40.78..2085.82 rows=1 loops=1) Merge Cond: ("outer".ids_vid_doc = "inner".ids) -> Index Scan using i_a_acc_ids_vid_doc on a_acc g (cost=0.00..43706.42 rows=1 width=8) (actual time=40.52..2085.55 rows=1 loops=1) Filter: (ids = 1338673) -> Sort (cost=1.83..1.89 rows=25 width=4) (actual time=0.22..0.22 rows=25 loops=1) Sort Key: vd.ids -> Seq Scan on a_vid_doc vd (cost=0.00..1.25 rows=25 width=4) (actual time=0.05..0.07 rows=25 loops=1) Total runtime: 2085.93 msec (8 rows) and explain analyze select G.IDS from A_ACC G , A_VID_DOC VD where G.IDS_VID_DOC=VD.IDS and G.IDS = 1338673 ; QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------- Merge Join (cost=1.83..1.97 rows=1 width=12) (actual time=40.91..2099.13 rows=1 loops=1) Merge Cond: ("outer".ids_vid_doc = "inner".ids) -> Index Scan using i_a_acc_ids_vid_doc on a_acc g (cost=0.00..43706.42 rows=1 width=8) (actual time=40.65..2098.86 rows=1 loops=1) Filter: (ids = 1338673) -> Sort (cost=1.83..1.89 rows=25 width=4) (actual time=0.22..0.22 rows=25 loops=1) Sort Key: vd.ids -> Seq Scan on a_vid_doc vd (cost=0.00..1.25 rows=25 width=4) (actual time=0.05..0.07 rows=25 loops=1) Total runtime: 2099.24 msec (8 rows) From time to time the second one is very slow (15-17 sek). If I execute: explain analyze select G.IDS from A_ACC G where G.IDS = 1338673 ; QUERY PLAN ------------------------------------------------------------------------------------------------------------------ Index Scan using a_acc_pkey on a_acc g (cost=0.00..3.13 rows=1 width=4) (actual time=0.06..0.06 rows=1 loops=1) Index Cond: (ids = 1338673) Total runtime: 0.11 msec (3 rows) , all is working well. How can I find the problem? I have index on A_ACC.IDS_VID_DOC and have vacuum full analyze; Will it help if I make A_ACC.IDS_VID_DOC not null ? My problem is that I will execute this query many times and ~ 2 sek is very slow for me. Many thanks and best regards, ivan.
pgsql-performance by date: