Дурацкий вопрос про ХП

ЧАстые Вопросы и Ответы

Модераторы: kdv, CyberMax

Ответить
zenja
Сообщения: 17
Зарегистрирован: 17 фев 2006, 13:29

Дурацкий вопрос про ХП

Сообщение zenja » 13 июл 2006, 21:53

Чисто теоретический вопрос :)
Имеет ли смысл использовать "процедурный" подход при написании ХП?
Т.е. использовать много процедур в одной. Например, Proc1 вызывает Proc2, Proc3, Proc4...
А исполозовать много вложенных процедур? Например, Proc1 вызывает Proc2, которая вызывает Proc3 и т.п.
Или лучше писать много кода (иногда даже повторяющегося) в одной процедуре?
Как это скажется на производительности базы?

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 13 июл 2006, 22:21

Чиста теоретический ответ. А Х его З. В общем-то случае. С одной стороны, размеры как текста процедуры, так и её BLR ограничены. Так что ежели она на Титаник смахивает, то её по любому нарубить придётся - не скомпилируется. С другой стороны, ежели меняться потом будет формат вызова мелких процедур - ну там количество и типаж параметров - то будет некоторый гемор с перекомпилированием всей флотилии малых судов. Опять же с одной стороны, если меняется алгоритм, то дешевле и надёжней его править в одном месте, а не вспоминать где ещё есть такой же код. Опять же с другой стороны, если код вложенной процедуры-метода, вызываемой из тыщи разных мест, будет не меняться, а усложняться и ветвиться по мере прогресса представлений о предметной области, патамушта при вызове вот отсуда она должна отработать так, а при вызове вот отсуда эдак, то она может превратиться в неуправляемую систему заплаток.

(Уходит в себя, загибая пальцы и бормоча под нос - с одной стороны... с другой стороны...)

Нда. Так вот - по месту надо решать, по месту. Вызов (препарирование и контроль прав) грозди будет малость дороже однократного, но на практике и в разумных пределах это полная фигня по сравнению с мировой революцией, сиречь планами запросов внутри процедур, которые будут выполняться хоть в лоб хоть по лбу. С другой стороны, если речь об управлении крылатой ракетой...

Ответить