четверг, 23 августа 2012 г.

Отладка модального окна

Создаем текстовый файл, прописываем в него следующие строки:

[FUNCTION]
Command=/H
Title=Debugger
Type=SystemCommand

Закрываем, сохраняем.
Теперь, если у вас есть программа с множеством всплывающих окон, а отладка нужна на каком то конкретном,  нужно просто в это конкретное окно перетащить данный файл и отладка включена.

четверг, 16 августа 2012 г.

Простая, но эффективная оптимизация запроса

Как оптимизировать запрос? Вариантов много, все зависит от поставленной задачи и самого запроса. Но есть довольно таки, простой, но в то же время достаточно эффективный способ оптимизации, при котором нет необходимости менять условия в запросе, разбирать JOIN и т.п. 
Например, при выполнении данного запроса:





























трассировка SQL (ST05), показала время выполнения  > 20 сек., не очень хорошее время, а если учесть, что этот запрос стоит в цикле, и выбирается около шести тысяч записей при каждом обращении, то все становится совсем грустно...












А теперь о волшебстве: необходимо, порядок следования выбираемых полей внутренних таблиц сделать таким же, как и в таблице словаря. Выглядит это так:


Теперь трассировка показывает совсем другой результат:









Совсем не плохо, учитывая, что мы просто поменяли следование полей внутренней таблицы. 
Исходя из этого конкретного запроса, таблицы участвующие в нем ANLA и ANLZ не буферизируются, а значит можно попробовать применить указания для БД, в миру HINTS, а конкретно HINTS &REPARSE&'. Основное назначение данного указателя формирование оптимального плана выполнения запроса.



Снова запускаем трассировку:








Оптимизация выполнена, без разбора условий запроса, без изменения кода программы.

P.S. 
Актуально для БД Oacle.

понедельник, 13 августа 2012 г.