Это хорошая практика для создания хранимой процедуры, которая создает пользовательскую функцию ...? - PullRequest
1 голос
/ 16 августа 2011

Я анализирую SQL-код такого же разработчика и могу ошибаться, но то, что они сделали, мне не кажется хорошим.

Дизайн предназначен для конструктора динамических выражений.Выражения сохраняются с использованием нескольких таблиц, и система работает.Меня беспокоит аспект системы, заключающийся в том, что когда записи выражений сохраняются, вызывается хранимая процедура, которая затем создает UDF, который развертывает все выражение как одну функцию.

Так что это означает, что для каждого созданного уникального выражения будет уникальный UDF, который может быть запущен и который выполнит это выражение.Я предполагаю, что это делается для того, чтобы план выполнения мог кэшироваться и производительность увеличивалась, в отличие от создания динамического sql и его запуска каждый раз.

Что вы, ребята, думаете, кажется ликак приемлемое решение?Вам нужно больше информации?

1 Ответ

3 голосов
/ 16 августа 2011

Это звучит как рецепт катастрофы для меня. Основная причина заключается в том, что если кто-то вернется и почистит UDF (если они не используются только один раз, тогда ваша идея «плана выполнения» будет снята), произойдет сбой программного обеспечения. И, если вы не будете убирать, у вас останется много беспорядка, особенно после длительного периода времени.

При дальнейшем чтении кажется, что пользовательские функции каким-то образом хранятся в виде метаданных, что звучит немного лучше, но я не уверен, что вы экономите столько времени, если учесть все дополнительные беспорядки, создаваемые несколькими пользовательскими функциями. Является ли производительность проблемой?

...