Как увелиить производительность PL/SQL скрипта

 
0
 
Oracle
ava
guest | 15.07.2004, 13:44
Нужны слветы по сабжу.
Comments (3)
ava
LSD | 15.07.2004, 20:10 #
Oracle писал, что производительность хранимых процедур написанных на Java по сравнению с процедурами PL/SQL, при использовании SQL запросов выше на 30-40%, без в 10-12 раз. Есть еще вариант с использованием процедур написанных на Си.
Но если основное время занимают SQL запросы, то надо оптимизировать в первую очередь их.
ava
<Spawn> | 16.07.2004, 05:00 #
Ты скрипт то покажи. Может ты написал неэффективный код.
ava
guest | 19.07.2004, 10:18 #
DECLARE
CURSOR c_oper (x NUMBER)
IS
SELECT log_id, user_id, object_code, operation_code, operation_date,
pkey
FROM log_operations
WHERE log_id = x;

v_c_oper c_oper%ROWTYPE;

CURSOR c_field (x NUMBER)
IS
SELECT field, old_value, new_value
FROM log_fields
WHERE log_id = x
ORDER BY log_field_id;

v_c_temp c_field%ROWTYPE;
BEGIN


<<main_loop>>
FOR c_log IN (SELECT log_id, user_id, date_chg, operation_code,
object_code, data_id, chgs
FROM loggin
WHERE ROWNUM < 101)
LOOP
OPEN c_oper (c_log.log_id);
OPEN c_field (c_log.log_id);
FETCH c_oper INTO v_c_oper;

<<nested_table_loop>>
FOR cntr IN 1 .. c_log.chgs.LAST
LOOP
FETCH c_field INTO v_c_temp;

IF c_log.chgs (cntr).field_name != v_c_temp.field
OR c_log.chgs (cntr).old_value != v_c_temp.old_value
OR c_log.chgs (cntr).new_value != v_c_temp.new_value
THEN
INSERT INTO err_log
VALUES ( 'Error in nested table. Log_id: '
|| TO_CHAR (c_log.log_id)
|| ' | '
|| v_c_temp.field
|| ','
|| v_c_temp.old_value
|| ','
|| v_c_temp.new_value
|| ' | '
|| c_log.chgs (cntr).field_name
|| ','
|| c_log.chgs (cntr).old_value
|| ','
|| c_log.chgs (cntr).new_value
);

EXIT nested_table_loop;
END IF;
END LOOP nested_table_loop;

IF v_c_oper.user_id != c_log.user_id
OR v_c_oper.object_code != c_log.object_code
OR v_c_oper.operation_code != c_log.operation_code
OR v_c_oper.operation_date != c_log.date_chg
OR v_c_oper.pkey != c_log.data_id
THEN
INSERT INTO err_log
VALUES ( 'Error in main table. Log_id: '
|| TO_CHAR (c_log.log_id)
);

EXIT main_loop;
END IF;

CLOSE c_oper;
CLOSE c_field;
END LOOP main_loop;

COMMIT;
END;
/
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit