Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Какие триггеры быстрее  [new]
АНТ
Member

Откуда: Москва
Сообщений: 124
Господа гуру что быстрее будет работать, это конечно более праздное любопытство и так понятно что разницы почти никакой:

Триггеры 1) и 2) делают одно и тоже но вот что правильнее, быстрее, "красивее".

1) Сработает один триггер и две проверки.
CREATE OR REPLACE TRIGGER SET_WRK_CARDS_HISTORY BEFORE INSERT OR UPDATE ON WRK_CARDS
FOR EACH ROW
BEGIN
Select USER, sys_context('userenv', 'host')
into :NEW.USER_NAME, :NEW.COMPUTER_NAME
from Dual;
if Inserting then
SELECT WRK_CARDS_ID.NEXTVAL INTO :NEW.ID FROM DUAL;
End if;
if Updating then
Select SYSDATE into :NEW.LAST_UPDATE_DATE from Dual;
End if;
END;


2) Сработает два триггера, но никаких проверок.
CREATE OR REPLACE TRIGGER SET_WRK_CARDS_HISTORY BEFORE INSERT OR UPDATE ON WRK_CARDS
FOR EACH ROW
BEGIN
Select USER, sys_context('userenv', 'host')
into :NEW.USER_NAME, :NEW.COMPUTER_NAME
from Dual;
END;

CREATE OR REPLACE TRIGGER SET_WRK_CARDS_ID BEFORE INSERT ON WRK_CARDS
FOR EACH ROW
BEGIN
SELECT WRK_CARDS_ID.NEXTVAL INTO :NEW.ID FROM DUAL;
END;

CREATE OR REPLACE TRIGGER SET_WRK_CARDS_HISTORYDATE BEFORE UPDATE ON WRK_CARDS
FOR EACH ROW
BEGIN
Select SYSDATE into :NEW.LAST_UPDATE_DATE from Dual;
END;
14 май 07, 16:54    [4135333]     Ответить | Цитировать Сообщить модератору
 Re: Какие триггеры быстрее  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116084
Я бы делал все в одном, по мне два триггера на одно действие выглядят неестественно.

Еще бы я подумал об отказе заполнения USER, host и NEXTVAL в триггере
и посмотрел бы таким образом в сторону ТОЛЬКО update- триггера.

Но это несколько зависит от.
14 май 07, 17:01    [4135368]     Ответить | Цитировать Сообщить модератору
 Re: Какие триггеры быстрее  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
А если испытать?

ИМХО, выполнение двух маленьких триггеров займёт больше времени, чем выполнение одного, большого.

Проверки в любом случае есть. Только в 1м случае они реализованы в PL/SQL блоке, а во 2м в методах СУБД.
14 май 07, 17:02    [4135376]     Ответить | Цитировать Сообщить модератору
 Re: Какие триггеры быстрее  [new]
креатор
Guest
При большом количестве полей время которое oracle будет тратить на формирование :NEW, вызов и т.д. заметно больше. Проверено на собственном опыте. Так что лучше один триггер.
14 май 07, 17:18    [4135472]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить