Re: ORDER BY ... LIMIT.. performance

Поиск
Список
Период
Сортировка
От Josh Berkus
Тема Re: ORDER BY ... LIMIT.. performance
Дата
Msg-id web-2023168@davinci.ethosmedia.com
обсуждение исходный текст
Ответ на ORDER BY ... LIMIT.. performance  ("john cartmell" <john.cartmell@mediaburst.co.uk>)
Список pgsql-performance
John,

> I am not sure whether this is a know problem but we discovered this
> the
> other day.
> We are using PostgreSQL 7.2.1 on Redhat 7.3.

First of all, there are a few bug-fixes between 7.2.1 and 7.2.3.  One
relates to backups, and another to security.  So you should upgrade to
7.2.3 immediately -- no init or restore from backup required (not
version 7.3, which has some significant changes).

> The table has about over a million rows (~1.4).
>
> The query concerned is of the form
>
> SELECT *
> FROM tblCompany
> WHERE lower(companyname) like 'company%'
> ORDER BY companyname
> LIMIT 20,0
>
> There is a functional index lower(companyname) for the like clause.
>
> Without the LIMIT clause the query takes approximately 3-5 seconds to
> return.
> If total number of rows returned without the LIMIT clause is greater
> than 20 records, then the above query also takes th same amount of
> time.
> But if the the total number of rows is 20 or less then the time taken
> for the above query to return goes up to 20-30 seconds. Has anyone
> else
> come across this. We have managed to get round it by performing a
> count
> first and only performing the LIMIT if there are enough rows but
> surely
> the query should be able to do this itself!

This seems very odd.  Please do the following:

1) Post an EXPLAIN ANALYZE statement for the above query, with limit,
that returns in 3-5 seconds.
2) Post an EXPLAIN ANALYZE for a query that returns slowly (20-30
seconds).

Thanks!

-Josh



В списке pgsql-performance по дате отправления:

Предыдущее
От: Jochem van Dieten
Дата:
Сообщение: Re: Is a better way to have the same result of this query?
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: Filesystem optimisation for postgresql tables and WAL