За время работы накопилось некоторое количество рекомендаций, с которыми я хочу сейчас с Вами поделиться:
- Используйте DB2 views вместо прямой работы с таблицами.
- Не используйте SELECT * в программах, вычитываейте только необходимые поля.
- Избегайте использования dinamic SQL если это возможно
- Не прячьте исполняемый код в includes. Код должен присутствовать только в программных модулях.
- Используйте DB2 includes, которые были сгенерированы при помощи страндартных средств DB2
- Переменные, которые іспользуются до доступа к DB2 должны иметь такую же длину и тип, как и соответствующие поля DB2 таблиц.
- Избегайте использования JOIN DB2 tables в программах. Исключение - batch программы, запускаемые заданием.
- Никогда не соеденяйте более двух таблиц в программах. Исключение - batch программы, запускаемые заданием.
- Доступ к таблицам следует производить, используя индексы.
- Старайтесь указывать полный Primary Key в WHERE части запроса. Исключение составляют таблицы, у которых менее 10 тысяч записей.
- Если Вы вычитываете поле, которое может быть NULL, обязательно проверяйте значение индикаторной переменной для этого поля.
- Используйте возможности DB2, чтобы работать с DATE/TIME:
DCL W_DATE1 CHAR (10) ; /* WORKING DATE CHAR */ DCL W_DATE2 CHAR (10) ; /* WORKING DATE CHAR */ EXEC SQL SET :W_DATE2 = CHAR(DATE(:W_DATE1) + 2 MONTH,ISO); SELECT (SQLCODE); WHEN(0); OTHER DO; ERROR-HANDLING END; END;
- Производите вычисления выражений заранее. Например, вместо
WHERE data1 < current DATE - 1 month
лучше использовать
WHERE data1 < :data1
Где значение переменной data1 было предварительно расчитано, как в примере выше
- Использование COMMIT/CHECKPOINT:
в BATCH заданиях - каждые 5 минут.
В BMP и MPP - после каждой логической транзакции.
- Используйте FOR READ ONLY WITH UR всегда, когда это возможно.
Отправить комментарий