1 / 22

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

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

arista
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Хранимые условия отбора Для пользователей, которым надо манипулировать несколькими типовыми комбинациями условий отбора, предлагается альтернативный механизм, называемый хранимыми условиями отбора. Он доступен во всех приложениях Системы в большинстве разделов. Суть этого механизма в том, что пользователь имеет возможность заранее подготовить для каждого раздела Системы любое количество типовых условий отбора. ПРОБЛЕМА1: Медленная работа хранимых условий отбора. ПРОБЛЕМА2: Нет возможности выполнить процедуру PL/SQL, для реализации сложной логики. РЕШЕНИЕ1: Ждать реализации условий отбора в разделе через PKG_COND_BROKER РЕШЕНИЕ2: Установить проектное решение из этой презентации

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

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

  5. Оптимизация хранимых условий отбора ВАЖНО! После выполнения скрипта из Hru.zip будет заменен штатный объект F_CONDFOLDERS_WHERE_CLAUSE Теперь при написании запросов станут доступны следующие конструкции /*rawsql*/ - при добавлении условия не будут добавляться “ in (…)” /*proc … proc*/ - перед выполнением запроса будет выполнена процедура PL/SQL

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

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

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

  9. Пример использования Выбираем действие “Папки…”

  10. Пример использования Добавляем папку “_В месяце

  11. Пример использования Добавляем папку “_Текущий расчет”

  12. Пример использования Создадим функции create or replace function UDO_F_SLCALCWAGES_CALCMONTH return number is begin return PKG_SLCALCWAGES.CALCMONTH; end; / grant execute on UDO_F_SLCALCWAGES_CALCMONTH to public / create or replace function UDO_F_SLCALCWAGES_CALCYEAR return number is begin return PKG_SLCALCWAGES.CALCYEAR; end; / grant execute on UDO_F_SLCALCWAGES_CALCYEAR to public / create or replace function UDO_F_SLCALCWAGES_CALCULATION return number is begin return PKG_SLCALCWAGES.CALCULATION; end; / grant execute on UDO_F_SLCALCWAGES_CALCULATION to public /

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

  14. Пример использования Запустим “Монитор SQL-запросов”

  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

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

  17. Пример использования Возвращаемся в модуль “Администратор” и у папки “_В месяце” нажимаем на кнопку “Запрос” В начале запроса вставим /*rawsql*/ - это позволит нам использовать existsвместо in (…)

  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

  19. Пример использования Для папку “_Текущий расчет” условие будет /*rawsql*/ exists ( select null from v_slpays_shadow s where s.nclnpspfm=v_clnpspfm.nrn and S.NSLCALCULAT = UDO_F_SLCALCWAGES_CALCULATION )

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

  21. Пример использования Реализация сложного отбора с помощью процедуры PL/SQL Вставляем комментарий вида /*proc begin … end; proc*/

  22. ВОПРОСЫ

More Related