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

Preview:

DESCRIPTION

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

Citation preview

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

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

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

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

mindiyarov@parus.ru

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Hru.zip

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

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

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

F_CONDFOLDERS_WHERE_CLAUSE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

in (…)

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

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

Результат:

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

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

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

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

/*rawsql*/ exists

(

select null

from v_slpays_shadow s

where s.nclnpspfm=v_clnpspfm.nrn

and S.NSLCALCULAT = UDO_F_SLCALCWAGES_CALCULATION

)

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

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

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

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

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

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

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

Recommended