Степан Д
Ученик
(131),
на голосовании
12 месяцев назад
Есть ф-я CREATE OR REPLACE FUNCTION tfunc_2(p_ids int[]) RETURNS numeric LANGUAGE plpgsql STABLE AS $function$ DECLARE res numeric; begin select avg(length( b.booking _ref)) into res from booking b where (array_length2(p_ids) < 1 or b.booking _id in (select unnest(p_ids::int[]))); return res; END $function$ ;
почему анализатор не может использовать индекс по полю b.booking _id и можно ли как-то заставить его это делать? в oracle решается хинтом cardinality
CREATE OR REPLACE FUNCTION tfunc_2(p_ids int[])
RETURNS numeric
LANGUAGE plpgsql
STABLE
AS $function$
DECLARE
res numeric;
begin
select avg(length( b.booking _ref))
into res
from booking b
where (array_length2(p_ids) < 1
or
b.booking _id in (select unnest(p_ids::int[])));
return res;
END
$function$
;
почему анализатор не может использовать индекс по полю b.booking _id и можно ли как-то заставить его это делать? в oracle решается хинтом cardinality