Re: Probleme mit sehr langsamen Left Outer Join

"Robert J. Rotter" <[email protected]> Wed, 2 Mar 2016 08:19:26 +0100
Newsgroups gmane.comp.db.postgresql.german
Message-ID <OF300517B6.63DB2118-ONC1257F6A.0026F2F5-C1257F6A.00283B5D@notes.denic.de>
Andreas Kretschmer <[email protected]> schrieb am 26.02.2016 
21:36:58:

> Robert J. Rotter <[email protected]> wrote:
> 
> > Hallo,
> > 
> > ich benötige mal einen Tipp von der Postgres Community:
> > 
> > Ich habe ein Query, das von einer Applikation abgesetzt wird was sehr, 

> > sehr lange dauert. 
> > Wohl mehrere Stunden, ich habe es nicht zu Ende laufen lassen.
> > 
> > Die Query sieht wie folgt aus (Schema-, Tabellen- und Spaltennamen 
habe 
> > ich abgeändert):
> > 
> > select <diverse spalten> from schema1.table1 cr
> > left outer join 
> > schema1.view1 co on cr.c_id = co.cId 
> > where name = 'name1';
> > 
> > wobei der view1 die folgende Form besitzt:
> > 
> > Folgender Query Plan kommt dabei raus:
> 
> zeig mal explain analyse ...
> 
> 
> Andreas

Hi, sorry der EXPLAIN ANALYZE hat ein wenig länger gedauert. Gute 57 
Stunden.

         QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Hash Right Join  (cost=43891.46..74562849.42 rows=1 width=302) (actual 
time=57760187.680..207029422.793 rows=1 loops=1)
   Hash Cond: (eci.cid = cr.cid)
   ->  Merge Join  (cost=43883.15..28736387.35 rows=3332833000 width=157) 
(actual time=153.804..206956782.687 rows=40063581 loops=1)
         Merge Cond: (((c.cid)::text = (eci.cid)::text) AND (c.rid = 
eci.rid))
         ->  Index Scan using pk_c on c2 c  (cost=0.56..4542612.58 
rows=39802190 width=132) (actual time=0.048..55931323.269 rows=40063581 
loops=1)
         ->  Index Scan using pk_e1 on e1 eci  (cost=0.56..2938434.16 
rows=41891849 width=40) (actual time=0.031..16125164.797 rows=40063582 
loops=1)
   ->  Hash  (cost=8.30..8.30 rows=1 width=4) (actual time=26.795..26.795 
rows=1 loops=1)
         Buckets: 1024  Batches: 1  Memory Usage: 1kB
         ->  Index Only Scan using pk_table1 on table1 cr (cost=0.28..8.30 
rows=1 width=4) (actual time=26.772..26.780 rows=1 loops=1)
               Index Cond: (name = 'a_name'::text)
               Heap Fetches: 1
 Total runtime: 207029423.634 ms
(12 rows)

Ich hoffe das war es wert. ;)

Ich hab auch nochmal die Zeilen gezählt:

schema2.c2 --> 40066021 rows
schema1.e1 --> 40066169 rows
schema1.table1 --> 7408 rows



Viele Grüße

Robert J. Rotter
smime.p7s (application/x-pkcs7-signature, 8.1 KB) - not displayed