From: | Ken Corey <ken(at)kencorey(dot)com> |
---|---|
To: | "Diehl, Jeffrey" <jdiehl(at)sandia(dot)gov> |
Cc: | pgsql-sql(at)postgresql(dot)org, pgsql-general(at)postgresql(dot)org |
Subject: | Re: Help with query. (*) |
Date: | 2001-01-17 19:34:05 |
Message-ID: | 3A65F3AD.7FDA0A49@kencorey.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-sql |
[NOTE: I'm a pgsql newbie myself. Take this reply with a large-ish
grain of salt!)
Shouldn't it be something straightforward like:
select a.a, a.b, a.c, ...
from a a,
b b
where a.x = b.x,
and a.y = b.y, ... (I'd watch out for too many clauses here...
if you've got a lot of clauses, you're probably not normalized
as much as you should be.)
If you have indexes on the relevant fields, you shouldn't get a table
scan and this should return rather quickly, right?
-Ken
"Diehl, Jeffrey" wrote:
>
> I'm having difficulty writing a query which I really can't live without...
>
> I need to get a list of records from table A for which there are
> corresponding records in table B. I've tried to use the intersect clause,
> but it doesn't seem to work, or it runs far too long. For example:
>
> select * from A
> where 1=1
> intersect select * from A where
> B.x=A.x
> and A.y=B.y
> and A.z=B.z
> limit 100
>
> I need the most efficient method possible; my A tables have upward of 5
> Million records. The B table, btw, only has about 100 records.
>
> Any help will be most appreciated.
From | Date | Subject | |
---|---|---|---|
Next Message | Yann Coupin | 2001-01-17 19:40:57 | Re: Problem with indexes |
Previous Message | Adam Lang | 2001-01-17 19:01:36 | Re: MySQL file system |
From | Date | Subject | |
---|---|---|---|
Next Message | Diehl, Jeffrey | 2001-01-17 20:17:57 | RE: Help with query. (*) |
Previous Message | Ligia M. Pimentel | 2001-01-17 17:59:53 | Re: ltsWriteBlock: failed to write block XX of temporary file. Perharps out of disk space... |