By definition, it is equivalent to:

SELECT t1.id, t2.url FROM referral_temp t2 LEFT /*OUTER*/ JOIN d_referral t1
ON t2.url = t1.referral_raw_url
union all
SELECT null, url FROM referral_temp WHERE url is null
ORDER BY 1;



/Aaron

----- Original Message ----- 
From: "Joe Conway" <[EMAIL PROTECTED]>
To: "Sean Shanny" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Friday, April 23, 2004 12:38 AM
Subject: Re: [PERFORM] Looking for ideas on how to speed up warehouse
loading


> Sean Shanny wrote:
> > explain analyze SELECT t1.id, t2.url FROM referral_temp t2 LEFT OUTER
> > JOIN d_referral t1 ON t2.url = t1.referral_raw_url ORDER BY t1.id;
>
> > What I would like to know is if there are better ways to do the join?  I
> > need to get all the rows back from the referral_temp table as they are
> > used for assigning FK's for the fact table later in processing.  When I
> > iterate over the values that I get back those with t1.id = null I assign
> > a new FK and push both into the d_referral table as new entries as well
> > as a text file for later use.  The matching records are written to a
> > text file for later use.
>
> Would something like this work any better (without disabling index scans):
>
> SELECT t1.id, t2.url
> FROM referral_temp t2, d_referral t1
> WHERE t1.referral_raw_url = t2.url;
>
> <process rows with a match>
>
> SELECT t1.id, t2.url
> FROM referral_temp t2
> WHERE NOT EXISTS
> (select 1 FROM d_referral t1 WHERE t1.referral_raw_url = t2.url);
>
> <process rows without a match>
>
> ?
>
> Joe
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
>

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to