Форум: "Базы";
Текущий архив: 2007.03.04;
Скачать: [xml.tar.bz2];
ВнизКакая функция отработает быстрее Найти похожие ветки
← →
alsov © (2006-12-07 17:17) [0]Приветствую, Мастера
написал 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;
Заранее благодарен
← →
alsov © (2006-12-07 17:20) [1]Вроде ставил галку
СУБД Oracle
← →
Desdechado © (2006-12-07 17:23) [2]померить не проще?
тем более обращение к данным из таблиц
← →
alsov © (2006-12-07 17:57) [3]
> Desdechado
А каким образом?
← →
k2 © (2006-12-07 18:38) [4]sql_trace, tkprof, runstats от Tom Kyte
кстати в книжках пишут, што merge дает выигрыш в производительности на больших объемах, интересно так ли это в данном конкретном случае
← →
ANB © (2006-12-07 19:04) [5]
> кстати в книжках пишут, што merge дает выигрыш в производительности
> на больших объемах
И не на больших тоже - проверяли. Я тоже написал с ифом, потом переписал на мерж. Быстрее.
PL/SQL вносит доп.тормоза.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.03.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.06 c