Estou usando o jooq para gerar consulta SQL e estou com um pouco de preguiça de gerar seleção aninhada de another_select de bottom_select. Minha consulta gerada contém expressões repetidas. O postgres 13+ aplica algumas técnicas de otimização nos bastidores?
amostra simplificada de parte da consulta
SELECT
case
when b.count is null then 100.00
when c.count is null then -100.00
else round(
cast((100.00 * ((c.count - b.count) / cast(b.count as numeric))) as numeric),
2
)
end as expression_01,
case
when b.count is null then 100.00
when c.count is null then -100.00
else round(
cast((100.00 * ((c.count - b.count) / cast(b.count as numeric))) as numeric),
2
)
end as expression_02
from some_table
Digamos
round(
cast((100.00 * ((c.count - b.count) / cast(b.count as numeric))) as numeric),
2
)
foi repetido várias vezes, o Postgres calculará isso uma vez ou várias vezes?