Обсуждение: INTERSECT / where id IN (etc..)

Поиск
Список
Период
Сортировка

INTERSECT / where id IN (etc..)

От
"James Cooper"
Дата:
Greetings.
 
I was wondering if somone out there could shed some light on a query performance issie I have.
I have a large lookup table that I query with nested selects to gain the INTERSECT result from.
 
the bigger this table gets the slower the performance.
 
1. is creating a temp table and only intersecting from this a good idea?
2. does having a where clause in your select before your nested intersects change the amount of work the query
 
i.e. select person_id from person where person_id < 5000 And person_id IN
    as opposed to
    select person_id from person where person_id IN(etc)
 
thoughts?
 

Re: INTERSECT / where id IN (etc..)

От
"Tomasz Myrta"
Дата:
> Greetings.
> 
> I was wondering if somone out there could shed some light on a query 
> performance issie I have. I have a large lookup table that I query 
> with nested selects to gain the INTERSECT result from.
> 
> the bigger this table gets the slower the performance.
> 
> 1. is creating a temp table and only intersecting from this a good idea?
> 
> 2. does having a where clause in your select before your nested 
> intersects change the amount of work the query
> 
> i.e. select person_id from person where person_id < 5000 And 
> person_id IN    as opposed to    select person_id from person where 
> person_id IN(etc)
> 
> thoughts?
person_id<5000 probably won't help - postgres will use index on exact 
person_id if possible.
Anyway - for large queries try change IN (...) into EXISTS (...), or just 
into explicit join if possible. IN clause is rather slow for bigger amount of 
data.

Regards,
Tomasz Myrta