PL\SQL функции в селекте

Starina
Дата: 27.09.2004 18:52:12
Расскажите, пожалуйста, почему замена саб-квери на функцию увеличивает время выполнения селекта в несколько раз, и ли можно это время сократить.

select
t1.*,
(select t2.column1 from table2 t2 where t2.column2 = t1.column)
from table1 t1

и

select
t1.*,
test_function(t1.column)
from table1 t1

где test_function

create function test_function(v_value table2.column2%type) retrurn table2.column1%type as
v_result table2.column1%type;
begin
select
t2.column1
from table2 t2
where t2.column2 = v_value;

retrurn(v_result);
exceptio
when no_data_found then
return(null);
end;

работает медленее.

Зарание спасибо.
Калина
Дата: 27.09.2004 19:01:36
Переключение контекста наверняка влияет , поиск оператора в Shared тоже
Starina
Дата: 30.09.2004 12:15:56
Что ни каких идей?
zayac
Дата: 30.09.2004 17:06:33
В двух словах подводя итог тому что тут обсуждалось: способ улучшить производительность функции в запросе - уменьшить количество строк, для которых это функция вызывается, т.е. дополнительные условия в where. Хотя это вроде и так понятно.