Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
2-1171395193
AzzHell
2007-02-13 22:33
2007.03.04
KeyBoard Hook


15-1171047425
vasIZmax
2007-02-09 21:57
2007.03.04
Глупый вопрос...


1-1168850523
DelphiLexx
2007-01-15 11:42
2007.03.04
Быстро определить скорость CPU


6-1159546933
vidiv
2006-09-29 20:22
2007.03.04
выполнение recv на болк. сокете


15-1170142422
savva
2007-01-30 10:33
2007.03.04
Лицензии на софт MS для образовательных учреждений.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский