Re: Stable function optimisation
От | Philipp Specht |
---|---|
Тема | Re: Stable function optimisation |
Дата | |
Msg-id | 62CBC6C5-93D8-4667-8143-02F6AF2B9C09@phlybye.de обсуждение исходный текст |
Ответ на | Re: Stable function optimisation (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-performance |
Hi Tom, Thank you very much for your explanation. On 13.08.2007, at 23:01, Tom Lane wrote: > Philipp Specht <phlybye@phlybye.de> writes: >> The biggest question here is: Why is the runtime of the query with >> the stable function not near the runtime of the immutable function? > > Stable functions don't get folded to constants. I tried to force this by using the following construct: SELECT t.id, t.a FROM public.t WHERE t.a=(VALUES(public.f())); Is this a bad practice and will destroy some other thing I can't think of at the moment? What it means for me at the moment is about half the query time of a high usage query directly linked to a gui. That's a big gain for a user interface and takes the query under the magical 500ms response time... >> It's definitely one query and the manual states that a stable >> function does not change in one statement and therefore can be >> optimised. > > That's not the type of optimization that gets done with it. What > "STABLE" is for is marking functions that are safe to use in index > conditions. If you'd been using an indexable condition you'd have > seen three different behaviors here. > > (I see that you do have an index on t.a, but apparently there are > too many matching rows for the planner to think the index is worth > using.) Yes, that's not the real problem here. It's only a test database and the real data behaves a bit differently. Have a nice day, Philipp
В списке pgsql-performance по дате отправления: