bad join preformance

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.

Browse pgsql-performance by date

  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