From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: update inside function does not use the index |
Date: | 2015-11-16 14:10:40 |
Message-ID: | 5649E3E0.5070307@aklaver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 11/16/2015 05:56 AM, Johannes wrote:
> Dear List,
>
> I have problems with a self written function, which does not use the
> index, which takes very long (500 ms per update).
>
>
> The pl/pgsql function iterates over a select resultset with a cursor.
> In every loop I execute an update with a where LIKE condition, which
> relates to my current cursor position:
>
> FOR i IN SELECT id, level_ids, path_names||'%' as path_names from x LOOP
> update x set path_ids[i.level] = id where path_names like i.path_names;
Is this the actual UPDATE in the function?
If so, where are i.level and id coming from?
Or is that supposed to be?:
update x set path_ids[i.level_ids] = i.id where path_names like
i.path_names;
> RAISE NOTICE 'path_names : %', i.path_names;
> END LOOP;
>
>
>
> Calling the updates outside the function, they are very fast because
> like 'a.b%' uses the index of the path field ( ~ 15 ms ).
>
> Does anyone know how to fix that?
> Thanks, Johannes
>
--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Kellerer | 2015-11-16 14:22:42 | Re: update inside function does not use the index |
Previous Message | Johannes | 2015-11-16 13:56:05 | update inside function does not use the index |