'Expensive' column in result set

Поиск
Список
Период
Сортировка
От Harvey, Allan AC
Тема 'Expensive' column in result set
Дата
Msg-id E97A5BB7699CAD48BE2711E71247116562426E@ntlmsg03.onesteel.com
обсуждение исходный текст
Ответы Re: 'Expensive' column in result set  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Hi all,

I have a select that involves a column in the result set that is expensive to get.
I need to use the expensive column in a subsequent calculated column.

Is there a syntax to run the expensive function once only or does it just have to be done,
blk_speed() is the expensive function.

Example of what I would like to do, does not work of course:
select
    b.block,
    b.p_code,
    p.description,
    p.blk_speed as "set",
    blk_speed( b.block ) as "actual",
    actual / set * 100 as "Speed %"
from block b, product p
where b.p_code = p.p_code;

This does work
select
    b.block,
    b.p_code,
    p.description,
    p.blk_speed as "set",
    blk_speed( b.block ) as "actual",
    blk_speed( b.block ) / ( p.blk_speed + 0.0001 ) * 100 as "Speed %"
from block b, product p
where b.p_code = p.p_code;

OR is postgres smart enough to know it only needs to get blk_speed() once.

Thanks

Allan


The material contained in this email may be confidential, privileged or copyrighted. If you are not the intended
recipient,use, disclosure or copying of this information is prohibited. If you have received this document in error,
pleaseadvise the sender and delete the document. Neither OneSteel nor the sender accept responsibility for any viruses
containedin this email or any attachments.
 

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Vacuuming
Следующее
От: Paul Lambert
Дата:
Сообщение: Re: Vacuuming