Re: Query Optimizer Failure / Possible Bug - Mailing list pgsql-performance

From Hannes Dorbath
Subject Re: Query Optimizer Failure / Possible Bug
Date
Msg-id 42515478$0$5507$8fe63b2a@news.disputo.net
Whole thread Raw
In response to Re: Query Optimizer Failure / Possible Bug  (PFC)
Responses Re: Query Optimizer Failure / Possible Bug  (Hannes Dorbath)
List pgsql-performance
Mhh. I have no clue about the internals of PostgreSQL and query planing,
but to me as user this should really be a thing the optimizer has to
work out..


On 03.04.2005 10:01, PFC wrote:
>
>     Noticed this problem,too.
>     You can always make the calculation you want done once inside a set
> returning function so it'll behave like a table, but that's ugly.
>
> On Mon, 28 Mar 2005 16:14:44 +0200, Hannes Dorbath
> <> wrote:
>
>> hm, a few days and not a single reply :|
>>
>> any more information needed? test data? simplified test case? anything?
>>
>>
>> thanks
>>
>>
>> Hannes Dorbath wrote:
>>
>>> The query and the corresponding EXPLAIN is at
>>>  http://hannes.imos.net/query.txt
>>>  I'd like to use the column q.replaced_serials for multiple calculations
>>> in the SELECT clause, but every time it is referenced there in some way
>>> the whole query in the FROM clause returning q is executed again.
>>>  This doesn't make sense to me at all and eats performance.
>>>  If this wasn't clear enough, for every
>>>  q.replaced_serials <insert_random_calculation> AS some_column
>>>  in the SELECT clause there is new block of
>>>  ---------------------------------------------------------------
>>> ->  Aggregate  (cost=884.23..884.23 rows=1 width=0)
>>>       ->  Nested Loop  (cost=0.00..884.23 rows=1 width=0)
>>>             ->  Index Scan using ix_rma_ticket_serials_replace on
>>>                         rma_ticket_serials rts  (cost=0.00..122.35
>>>                         rows=190 width=4)
>>>                   Index Cond: ("replace" = false)
>>>             ->  Index Scan using pk_serials on serials s
>>>                           (cost=0.00..3.51 rows=1 width=4)
>>>                   Index Cond: (s.serial_id = "outer".serial_id)
>>>                   Filter: ((article_no = $0) AND (delivery_id = $1))
>>> ---------------------------------------------------------------
>>>  in the EXPLAIN result.
>>>  For those who wonder why I do this FROM (SELECT...). I was
>>> searching  for
>>> a way to use the result of an subselect for multiple calculations in the
>>> SELECT clause and return that calculation results as individual columns.
>>>  I tested a bit further and found out that PG behaves the same in case q
>>> is a view. This makes me wonder how efficient the optimizer can work
>>> with views - or even worse - nested views.
>>>  Tested and reproduced on PG 7.4.1 linux and 8.0.0 win32.
>>>   Thanks in advance,
>>> Hannes Dorbath
>>
>>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
>               http://www.postgresql.org/docs/faq
>

pgsql-performance by date:

Previous
From: "S.Thanga Prakash"
Date:
Subject: Is Indexed View Supported in psql 7.1.3??
Next
From: "anon permutation"
Date:
Subject: 8.0.1 much slower than 7.4.2?