Re: SELECT ignoring index even though ORDER BY and LIMIT present

From: Matthew Wakeling <matthew(at)flymine(dot)org>
To: Jori Jovanovich <jori(at)dimensiology(dot)com>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: SELECT ignoring index even though ORDER BY and LIMIT present
Date: 2010-06-03 10:15:45
Message-ID: alpine.DEB.2.00.1006031110330.4083@aragorn.flymine.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Wed, 2 Jun 2010, Jori Jovanovich wrote:
> (2) Making the query faster by making the string match LESS specific (odd,
> seems like it should be MORE)

No, that's the way round it should be. The LIMIT changes it all. Consider
if you have a huge table, and half of the entries match your WHERE clause.
To fetch the ORDER BY ... LIMIT 20 using an index scan would involve
accessing only on average 40 entries from the table referenced by the
index. Therefore, the index is quick. However, consider a huge table that
only has twenty matching entries. The index scan would need to touch every
single row in the table to return the matching rows, so a sequential scan,
filter, and sort would be much faster. Of course, if you had an index
capable of answering the WHERE clause, that would be even better for that
case.

Matthew

--
Don't criticise a man until you have walked a mile in his shoes; and if
you do at least he will be a mile behind you and bare footed.

In response to

Browse pgsql-performance by date

  From Date Subject
Next Message Merlin Moncure 2010-06-03 13:01:01 Re: Weird XFS WAL problem
Previous Message Joshua Tolley 2010-06-03 02:27:46 Re: requested shared memory size overflows size_t