Re: need much better query perfomance
| От | Tom Lane |
|---|---|
| Тема | Re: need much better query perfomance |
| Дата | |
| Msg-id | 20472.1043824456@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | need much better query perfomance (andy@mixonic.com (Andy)) |
| Ответы |
Re: need much better query perfomance
|
| Список | pgsql-general |
andy@mixonic.com (Andy) writes:
> select track_id from track where track_id not in (
> select at.track_id from album_track at, album alb
> where at.album_id = alb.album_id and alb.deleted is null
> )
> The above query should work, but it takes too long to execute.
The performance of NOT IN pretty much sucks :-(. (7.4 will be
better, but that doesn't help you today.) I'd suggest rewriting
to avoid that. Perhaps
CREATE TEMP TABLE keepers AS
select at.track_id from album_track at, album alb
where at.album_id = alb.album_id and alb.deleted is null;
CREATE TEMP TABLE zappers AS
SELECT track_id FROM track EXCEPT SELECT track_id FROM keepers;
DELETE FROM track WHERE track_id = zappers.track_id;
Untested, use at your own risk, etc.
regards, tom lane
В списке pgsql-general по дате отправления: