| From: | "Merlin Moncure" <mmoncure(at)gmail(dot)com> | 
|---|---|
| To: | "Stuart Bishop" <stuart(dot)bishop(at)canonical(dot)com> | 
| Cc: | pgsql-performance(at)postgresql(dot)org | 
| Subject: | Re: Slow functional indexes? | 
| Date: | 2006-10-21 02:39:31 | 
| Message-ID: | b42b73150610201939v250e4314yfc86f06568ac97d7@mail.gmail.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-performance | 
On 10/20/06, Stuart Bishop <stuart(dot)bishop(at)canonical(dot)com> wrote:
> I would like to understand what causes some of my indexes to be slower to
> use than others with PostgreSQL 8.1. On a particular table, I have an int4
> primary key, an indexed unique text 'name' column and a functional index of
> type text. The function (person_sort_key()) is declared IMMUTABLE and
> RETURNS NULL ON NULL INPUT.
database will not allow you to create index if the function is not immutable.
> A simple query ordering by each of these columns generates nearly identical
> query plans, however runtime differences are significantly slower using the
> functional index. If I add a new column to the table containing the result
> of the function, index it and query ordering by this new column then the
> runtime is nearly an order of magnitude faster than using the functional
> index (and again, query plans are nearly identical).
> demo=# explain analyze select * from person order by id offset 527000 limit 50;
>                                                                  QUERY PLAN
it looks you just turned up a bad interaction between a functional
index and 'offset' probably your function is getting executed extra
times or there is a sort going on.  however, I'd suggest not using
'offset', because its bad design.
merlin
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Merlin Moncure | 2006-10-21 02:50:01 | Re: Is ODBC that slow? | 
| Previous Message | Alvaro Herrera | 2006-10-21 02:32:11 | Re: Is ODBC that slow? |