Оптимизация хранимых условий отбора
description
Transcript of Оптимизация хранимых условий отбора
![Page 1: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/1.jpg)
Оптимизация хранимых условий отбора
Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга ПАРУС
![Page 2: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/2.jpg)
Комплексная система управления.
Хранимые условия отбора
Для пользователей, которым надо манипулировать несколькими типовыми комбинациями условий отбора, предлагается альтернативный механизм, называемый хранимыми условиями отбора. Он доступен во всех приложениях Системы в большинстве разделов. Суть этого механизма в том, что пользователь имеет возможность заранее подготовить для каждого раздела Системы любое количество типовых условий отбора.
ПРОБЛЕМА1: Медленная работа хранимых условий отбора.
ПРОБЛЕМА2: Нет возможности выполнить процедуру PL/SQL, для реализации сложной логики.
РЕШЕНИЕ1: Ждать реализации условий отбора в разделе через PKG_COND_BROKER
РЕШЕНИЕ2: Установить проектное решение из этой презентации
![Page 3: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/3.jpg)
Комплексная система управления.
Пример использования Система контроля учетных данных
Пример папок отбора
![Page 4: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/4.jpg)
Комплексная система управления.
Вопросы рассматриваемые в презентации
• Ускорение работы хранимых условий отбора
Для получения текста программ нажмите правой кнопкой мыши на объекте “Hru.zip” выберите “Копировать”, а затем в проводнике нажмите правую кнопку мыши и выберите “Вставить”.
Hru.zip
![Page 5: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/5.jpg)
Комплексная система управления.
Оптимизация хранимых условий отбора
ВАЖНО! После выполнения скрипта из Hru.zip будет заменен штатный объект
F_CONDFOLDERS_WHERE_CLAUSE
Теперь при написании запросов станут доступны следующие конструкции• /*rawsql*/ - при добавлении условия не будут добавляться “ in (…)”• /*proc … proc*/ - перед выполнением запроса будет выполнена процедура PL/SQL
![Page 6: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/6.jpg)
Комплексная система управления.
Пример использования
В модуле “Администратор” “Словари”->”Хранимые условия отбора”->”Таблицы отбора”
![Page 7: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/7.jpg)
Комплексная система управления.
Пример использования
Выполняем действие “Генерация состава”
![Page 8: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/8.jpg)
Комплексная система управления.
Пример использования
В модуле “Администратор” “Словари”->”Хранимые условия отбора”->”Схемы отбора”
![Page 9: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/9.jpg)
Комплексная система управления.
Пример использования
Выбираем действие “Папки…”
![Page 10: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/10.jpg)
Комплексная система управления.
Пример использования
Добавляем папку “_В месяце
![Page 11: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/11.jpg)
Комплексная система управления.
Пример использования
Добавляем папку “_Текущий расчет”
![Page 12: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/12.jpg)
Комплексная система управления.
Пример использования
Создадим функции
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: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/13.jpg)
Комплексная система управления.
Пример использования
В модуле “Расчет зарплаты” “Функции”->”Расчет зарплаты” перейдем на вкладку “Папки”
![Page 14: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/14.jpg)
Комплексная система управления.
Пример использования
Запустим “Монитор SQL-запросов”
![Page 15: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/15.jpg)
Комплексная система управления.
Пример использования
Узнаем как называется (какой имеет псевдоним) главное представление раздела
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: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/16.jpg)
Комплексная система управления.
Пример использования
Возвращаемся в модуль “Администратор” и у папки “_В месяце” нажимаем на кнопку “Запрос”
![Page 17: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/17.jpg)
Комплексная система управления.
Пример использования
Возвращаемся в модуль “Администратор” и у папки “_В месяце” нажимаем на кнопку “Запрос”
В начале запроса вставим /*rawsql*/ - это позволит нам использовать exists вместо
in (…)
![Page 18: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/18.jpg)
Комплексная система управления.
Пример использования
Результат:
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: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/19.jpg)
Комплексная система управления.
Пример использования
Для папку “_Текущий расчет” условие будет
/*rawsql*/ exists
(
select null
from v_slpays_shadow s
where s.nclnpspfm=v_clnpspfm.nrn
and S.NSLCALCULAT = UDO_F_SLCALCWAGES_CALCULATION
)
![Page 20: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/20.jpg)
Комплексная система управления.
Пример использования
Реализация сложного отбора с помощью процедуры PL/SQL
![Page 21: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/21.jpg)
Комплексная система управления.
Пример использования
Реализация сложного отбора с помощью процедуры PL/SQL
Вставляем комментарий вида /*proc begin … end; proc*/
![Page 22: Оптимизация хранимых условий отбора](https://reader036.fdocument.pub/reader036/viewer/2022062801/56814315550346895daf69a1/html5/thumbnails/22.jpg)