5

提取方法是编写编程语言时常见的重构模式。

当我尝试对我的存储过程进行一些重构时,我想知道在编写存储过程(SP)/用户定义函数(UDF)时使用提取方法是否也是一种好习惯,因为我们可以调用其他 SP/UDF SP/UDF?

会影响性能吗?

提前致谢。

4

1 回答 1

1

只是我的意见(现在使用数据库工作了几年):

存储过程应仅用于数据库任务。例如迁移数据(例如,目前我正在研究转换数据库结构的过程),或一些动态查询(动态构建 sql 语句),或者构建表的过程(例如包含特定日期范围的日期的表)。

不为别的!对于比上述示例更复杂的所有内容,请考虑在应用层对其进行编码。

此外,您可能听说将尽可能多的业务逻辑放入数据库是明智的。数据库设计确实如此,但这并不意味着您应该在其中编写几乎所有内容。数据库不擅长这一点(例如谈论数据转换或类似的东西)。像 PHP 或其他更快的编程语言!

因此,对于我使用存储过程的所有内容,我从不觉得需要在额外的过程中添加任何内容。除了例如数据库的重组(在我的情况下,它是一个 ETL 过程(它将数据非规范化为星型模式以获得更好的性能)),在那里我为每个表编写了一个过程,这些过程是从一个管理整个过程。但同样,它与编程语言完全不同。

此外,当我将这个示例用于提取方法模式http://www.refactoring.com/catalog/extractMethod.html
在您的数据库中有类似的内容将成为调试的噩梦,您将花费太多时间编码。同样,应该使用存储过程的情况并不是应用提取方法模式有意义的情况。

于 2013-11-14T12:19:38.910 回答