> I use a similar SQL, e.g.:
> select func(x)....group by func(x) order by func(x)
> but my func is rather expensive. Is func(x) evaluated three times
> in the above statement? Would it be evaluated only once if I used
> select func(x)....group by 1 order by 1
try:
select q.v from (select func(t.x) as v from t) q order group by 1 order by 1;
Is your function immutable? You have to be very careful with
expensive functions in the select clause. for example
select f(x) from t where id = 1 order by n;
can cause f to execute for the entire table even if id is unique.
Solution is to subquery as in the above.
merlin