Оптимизация хранимых условий отбора

22
Оптимизация хранимых условий отбора Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС [email protected]

Upload: arista

Post on 11-Jan-2016

53 views

Category:

Documents


3 download

DESCRIPTION

Оптимизация хранимых условий отбора. Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС [email protected]. Хранимые условия отбора. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Оптимизация хранимых условий отбора

Оптимизация хранимых условий отбора

Миндияров Илья

Главный специалист

Центра информационных технологий и консалтинга ПАРУС

[email protected]

Page 2: Оптимизация хранимых условий отбора

Комплексная система управления.

Хранимые условия отбора

Для пользователей, которым надо манипулировать несколькими типовыми комбинациями условий отбора, предлагается альтернативный механизм, называемый хранимыми условиями отбора. Он доступен во всех приложениях Системы в большинстве разделов. Суть этого механизма в том, что пользователь имеет возможность заранее подготовить для каждого раздела Системы любое количество типовых условий отбора.

ПРОБЛЕМА1: Медленная работа хранимых условий отбора.

ПРОБЛЕМА2: Нет возможности выполнить процедуру PL/SQL, для реализации сложной логики.

РЕШЕНИЕ1: Ждать реализации условий отбора в разделе через PKG_COND_BROKER

РЕШЕНИЕ2: Установить проектное решение из этой презентации

Page 3: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования Система контроля учетных данных

Пример папок отбора

Page 4: Оптимизация хранимых условий отбора

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Ускорение работы хранимых условий отбора

Для получения текста программ нажмите правой кнопкой мыши на объекте “Hru.zip” выберите “Копировать”, а затем в проводнике нажмите правую кнопку мыши и выберите “Вставить”.

Hru.zip

Page 5: Оптимизация хранимых условий отбора

Комплексная система управления.

Оптимизация хранимых условий отбора

ВАЖНО! После выполнения скрипта из Hru.zip будет заменен штатный объект

F_CONDFOLDERS_WHERE_CLAUSE

Теперь при написании запросов станут доступны следующие конструкции• /*rawsql*/ - при добавлении условия не будут добавляться “ in (…)”• /*proc … proc*/ - перед выполнением запроса будет выполнена процедура PL/SQL

Page 6: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

В модуле “Администратор” “Словари”->”Хранимые условия отбора”->”Таблицы отбора”

Page 7: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Выполняем действие “Генерация состава”

Page 8: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

В модуле “Администратор” “Словари”->”Хранимые условия отбора”->”Схемы отбора”

Page 9: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Выбираем действие “Папки…”

Page 10: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Добавляем папку “_В месяце

Page 11: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Добавляем папку “_Текущий расчет”

Page 12: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Создадим функции

create or replace function UDO_F_SLCALCWAGES_CALCMONTH return number isbegin return PKG_SLCALCWAGES.CALCMONTH;end;/grant execute on UDO_F_SLCALCWAGES_CALCMONTH to public/create or replace function UDO_F_SLCALCWAGES_CALCYEAR return number isbegin return PKG_SLCALCWAGES.CALCYEAR;end;/grant execute on UDO_F_SLCALCWAGES_CALCYEAR to public/create or replace function UDO_F_SLCALCWAGES_CALCULATION return number isbegin return PKG_SLCALCWAGES.CALCULATION;end;/grant execute on UDO_F_SLCALCWAGES_CALCULATION to public/

Page 13: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

В модуле “Расчет зарплаты” “Функции”->”Расчет зарплаты” перейдем на вкладку “Папки”

Page 14: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Запустим “Монитор SQL-запросов”

Page 15: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Узнаем как называется (какой имеет псевдоним) главное представление раздела

select V_CLNPSPFM.*, F_CLNPSPFM_GET_CHARGE(NCOMPANY, NRN) N78928, F_CLNPSPFM_GET_RETAIN(NCOMPANY, NRN) N78929, F_CLNPSPFM_GET_OVERPAY(NCOMPANY, NRN) N78930, F_CLNPSPFM_GET_PAY(NCOMPANY, NRN) N78931, F_CLNPSPFM_GET_GRWAGES(NCOMPANY, NRN) N78932, F_CLNPSPFM_GET_RATE(NCOMPANY, NRN) N78933, substr(F_CLNPSPFM_GET_SCHEDULE(NCOMPANY, NRN), 1, 240) S78934, substr(F_CLNPSPFM_GET_SLCOSTS(NCOMPANY, NRN), 1, 240) S78935 from V_CLNPSPFM where nCOMPANY = :A$COMPANY order by SSURNAME, DBEGENG

В нашем случае псевдонима нет – представление так и называется V_CLNPSPFM

Page 16: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Возвращаемся в модуль “Администратор” и у папки “_В месяце” нажимаем на кнопку “Запрос”

Page 17: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Возвращаемся в модуль “Администратор” и у папки “_В месяце” нажимаем на кнопку “Запрос”

В начале запроса вставим /*rawsql*/ - это позволит нам использовать exists вместо

in (…)

Page 18: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Результат:

select V_CLNPSPFM.*, F_CLNPSPFM_GET_CHARGE(NCOMPANY, NRN) N78928, F_CLNPSPFM_GET_RETAIN(NCOMPANY, NRN) N78929, F_CLNPSPFM_GET_OVERPAY(NCOMPANY, NRN) N78930, F_CLNPSPFM_GET_PAY(NCOMPANY, NRN) N78931, F_CLNPSPFM_GET_GRWAGES(NCOMPANY, NRN) N78932, F_CLNPSPFM_GET_RATE(NCOMPANY, NRN) N78933, substr(F_CLNPSPFM_GET_SCHEDULE(NCOMPANY, NRN), 1, 240) S78934, substr(F_CLNPSPFM_GET_SLCOSTS(NCOMPANY, NRN), 1, 240) S78935 from V_CLNPSPFM where /*rawsql*/ exists

(select null from v_slpays_shadow s where s.nclnpspfm=v_clnpspfm.nrn and S.NMONTH = UDO_F_SLCALCWAGES_CALCMONTH and S.NYEAR = UDO_F_SLCALCWAGES_CALCYEAR) and nCOMPANY = :A$COMPANY order by SSURNAME, DBEGENG

Page 19: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Для папку “_Текущий расчет” условие будет

/*rawsql*/ exists

(

select null

from v_slpays_shadow s

where s.nclnpspfm=v_clnpspfm.nrn

and S.NSLCALCULAT = UDO_F_SLCALCWAGES_CALCULATION

)

Page 20: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Реализация сложного отбора с помощью процедуры PL/SQL

Page 21: Оптимизация хранимых условий отбора

Комплексная система управления.

Пример использования

Реализация сложного отбора с помощью процедуры PL/SQL

Вставляем комментарий вида /*proc begin … end; proc*/

Page 22: Оптимизация хранимых условий отбора