Hi Andy, I've tried that with the same result. One subquery works beautifully, two subqueries with an OR and it starts to do a sequential scan... Thanks, Bastiaan Olij On 19/02/13 6:31 PM, Andy wrote: > Limit the sub-queries to 1, i.e. : > > select 1 from Table2 where Table2.ForeignKey = Table1.PrimaryKey fetch > first 1 rows only > > Andy. > > On 19.02.2013 07:34, Bastiaan Olij wrote: >> Hi All, >> >> Hope someone can help me a little bit here: >> >> I've got a query like the following: >> -- >> select Column1, Column2, Column3 >> from Table1 >> where exists (select 1 from Table2 where Table2.ForeignKey = >> Table1.PrimaryKey) >> or exists (select 1 from Table3 where Table3.ForeignKey = >> Table1.PrimaryKey) >> -- >> >> Looking at the query plan it is doing a sequential scan on both Table2 >> and Table3. >> >> If I remove one of the subqueries and turn the query into: >> -- >> select Column1, Column2, Column3 >> from Table1 >> where exists (select 1 from Table2 where Table2.ForeignKey = >> Table1.PrimaryKey) >> -- >> >> It is nicely doing an index scan on the index that is on >> Table2.ForeignKey. >> >> As Table2 and Table3 are rather large the first query takes minutes >> while the second query takes 18ms. >> >> Is there a way to speed this up or an alternative way of selecting >> records from Table1 which have related records in Table2 or Table3 which >> is faster? >> >> Kindest Regards, >> >> Bastiaan Olij >> >> >> > -- Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance