From: | pginfo <pginfo(at)t1(dot)unisoftbg(dot)com> |
---|---|
To: | "pgsql-performance(at)postgresql(dot)org" <pgsql-performance(at)postgresql(dot)org> |
Subject: | bad join preformance |
Date: | 2003-08-18 10:10:43 |
Message-ID: | 3F40A623.FF953D8E@t1.unisoftbg.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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.
From | Date | Subject | |
---|---|---|---|
Next Message | pginfo | 2003-08-18 14:58:49 | bad join performance |
Previous Message | Shridhar Daithankar | 2003-08-18 06:21:32 | Re: Insert performance |