Re: Slow query with backwards index scan - Mailing list pgsql-performance

From andrew@pillette.com
Subject Re: Slow query with backwards index scan
Date
Msg-id 200707281903.l6SJ3qs07818@pillette.com
Whole thread Raw
In response to Slow query with backwards index scan  (Tilmann Singer <tils-pgsql@tils.net>)
Responses Re: Slow query with backwards index scan
List pgsql-performance
Tilmann Singer <tils-pgsql@tils.net> wrote ..
> * Nis J�rgensen <nis@superlativ.dk> [20070727 20:31]:
> > How does the "obvious" UNION query do - ie:
> >
> > SELECT * FROM (
> > SELECT * FROM large_table lt
> > WHERE lt.user_id = 12345
> >
> > UNION
> >
> > SELECT * FROM large_table lt
> > WHERE user_id IN (SELECT contact_id FROM relationships WHERE user_id=12345)
> > ) q
> >
> > ORDER BY created_at DESC LIMIT 10;

Let's try putting the sort/limit in each piece of the UNION to speed them up separately.

SELECT * FROM (
 (SELECT * FROM large_table lt
 WHERE lt.user_id = 12345
 ORDER BY created_at DESC LIMIT 10) AS q1
 UNION
 (SELECT * FROM large_table lt
 WHERE user_id IN (SELECT contact_id FROM relationships WHERE user_id=12345)
 ORDER BY created_at DESC LIMIT 10) AS q2
ORDER BY created_at DESC LIMIT 10;

pgsql-performance by date:

Previous
From: "Jim C. Nasby"
Date:
Subject: Re: Vacuum looping?
Next
From: Tilmann Singer
Date:
Subject: Re: Slow query with backwards index scan