对于SQL存储过程编程,代码重用和模块化是一个好主意吗?
如果是这样,将这些功能添加到SQL存储过程代码库的最佳方法是什么?
我通常为常见和重复的任务创建标量值函数.我发现它既简化了与现有程序类似的新程序的开发,又在错误跟踪和故障排除方面提供了很多帮助.
由于性能问题,我试图远离表值函数.
我的经验法则是,如果它是一个计算,并且它在几个地方使用,那么我创建一个标量值函数.
您将发现在查询中使用函数是性能的灾难.这些函数成为优化器的黑盒子,因此您最终会将函数调用重新编码回查询中,以便在您获得表中的大量行时使其快速运行.
处理常见计算的更好方法是使用触发器或插入/更新查询将它们插入到新列中.这样,您可以索引计算的值并直接使用它,而不是每次需要时都计算出来.