If you can answer the other questions that would help as well you can try rewriting using "exist" instead of "in" But without the basic information like number of records expected and explain plan it is very hard to come up with a better solution. Brgds Jack 2008/9/26 Chris <dmagick@xxxxxxxxx> > Jack van Zanen wrote: > >> Hi >> >> If I am not mistaken, >> the second part of the union contains all rows that are in the first part >> of >> the union. just remove the first part. >> > > Kind of. > > The first part is a join, the second isn't. > > I was going to suggest rewriting the subquery into a single: > > where > ip.blockid in (...) > or > bu.blockid in (...) > > however that'll probably be slower, but def. worth a try. > > > -- > Postgresql & php tutorials > http://www.designmagick.com/ > > -- J.A. van Zanen