![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Какая функция отработает быстрее
alsov © (2006-12-07 17:17:00)Приветствую, Мастера
написал 2 функции, выполняющие одно и то же
Хотелось бы услышать мнение, какая из них быстрее будет работать
function is_value_exist(
aparameter_id IN NUMBER,
aworker_id IN NUMBER
) return number
is
l_tmp number(10);
begin
select 1 into l_tmp
from stpir.value
where parameter_id=aparameter_id and worker_id=aworker_id;
return l_tmp;
exception
when no_data_found then return null;
end is_measure_value_exist;
procedure worker_value_i(
aparameter_id IN NUMBER,
aworker_id IN NUMBER,
avalue IN NUMBER
)
IS
BEGIN
if is_value_exist(aparameter_id, aworker_id) is null then
INSERT INTO worker_value (
parameter_ID,
WORKER_ID,
VALUE)
VALUES (
aparameter_id,
aworker_id,
avalue);
else
update worker_value
set value=value+avalue
where parameter_id=aparameter_id and worker_id=aworker_id;
end if;
END;
И вторая, написал через merge
procedure stpir_worker_value_i(
aworker_id in number,
aparameter_id in number,
avalue in number
)
is
begin
merge into stpir.worker_value mwv
using (select aparameter_id as parameter_id, aworker_id as worker_id from dual) d
on (d.worker_id=mwv.worker_id and d.parameter_id=mwv.parameter_id)
when matched then update set mwv.value=mwv.value+avalue
when not matched then insert (mwv.worker_id, mwv.parameter_id, mwv.value)
values (aworker_id, aparameter_id, avalue);
end;
Заранее благодарен
ANB (2006-12-07 19:04:00) [1]
> кстати в книжках пишут, што merge дает выигрыш в производительности
> на больших объемах
И не на больших тоже - проверяли. Я тоже написал с ифом, потом переписал на мерж. Быстрее.
PL/SQL вносит доп.тормоза.
k2 (2006-12-07 18:38:00) [2]sql_trace, tkprof, runstats от Tom Kyte
кстати в книжках пишут, што merge дает выигрыш в производительности на больших объемах, интересно так ли это в данном конкретном случае
alsov (2006-12-07 17:57:00) [3]
> Desdechado
А каким образом?
Desdechado (2006-12-07 17:23:00) [4]померить не проще?
тем более обращение к данным из таблиц
alsov (2006-12-07 17:20:00) [5]Вроде ставил галку
СУБД Oracle