Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как увелиить производительность PL/SQL скрипта, Срочно! 
:(
    Опции темы
WolfON
Дата 15.7.2004, 12:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Нужны слветы по сабжу.
  Вверх
LSD
Дата 15.7.2004, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Oracle писал, что производительность хранимых процедур написанных на Java по сравнению с процедурами PL/SQL, при использовании SQL запросов выше на 30-40%, без в 10-12 раз. Есть еще вариант с использованием процедур написанных на Си.
Но если основное время занимают SQL запросы, то надо оптимизировать в первую очередь их.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
<Spawn>
Дата 16.7.2004, 05:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Ты скрипт то покажи. Может ты написал неэффективный код.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
WolfON
Дата 19.7.2004, 10:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











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;
/
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0477 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.