创建一个创建用户定义函数的存储过程是一个好习惯吗?

时间:2011-08-16 19:18:56

标签: sql-server stored-procedures architecture user-defined-functions

我正在分析开发人员的SQL代码,我可能完全错了,但他们所做的事情对我来说似乎并不好。

该设计适用于动态表达式构建器。表达式使用几个表存储,系统可以正常工作。我关注的系统方面是,当存储表达式记录时,会调用一个存储过程,然后创建一个UDF,将整个表达式展开为一个函数。

那么这意味着,对于每个创建的唯一表达式,都会有一个可以运行的唯一UDF来执行该表达式。我假设这样做是为了可以缓存执行计划并提高性能,而不是每次都构建动态sql并运行它。

你们怎么想?它看起来像是一个可接受的解决方案吗?你需要更多信息吗?

1 个答案:

答案 0 :(得分:3)

这对我来说听起来像是一场灾难。主要原因是如果有人回去清理UDF(除非他们只使用一次,然后你的“执行计划”想法被拍摄)软件失败。并且,如果你不清理,最终会导致很多杂乱,特别是在很长一段时间后。

在进一步阅读时,听起来UDF以某种方式存储为元数据,这听起来好一些,但是一旦你考虑创建多个UDF创建的所有额外混乱,我不确定你是否节省了多少。性能是一个问题吗?