我有一个SQL查询,我将在多个存储过程中重用.该查询适用于多个表,并根据传递给它的2个变量返回一个整数值.
>根据变量创建一个可以加入的视图,并从中获取整数值.
>再次使用传递给它的标准创建一个函数并返回整数变量
我倾向于选择1,但希望有更好的和常见的做法.哪个更好的性能明智等(加入视图或调用函数)
编辑:RDBMS是sql Server
解决方法
如果您将始终使用相同的参数谓词过滤结果,那么我将去参加一个参数化的内联表值函数.在理论上,这被视为与View相同,因为它们在实践中都被优化器扩展,可以避免谓词推送问题.这样一个例子可以在
this article的第二部分看到.
正如Andomar在评论中指出的那样,查询优化器确实做的很好,把谓词推到需要的位置,但是我并不知道使用内联TVF的情况会更糟,所以这似乎是两个(非常相似)结构之间的理性默认选择.
我可以看到的一个优点是,它将允许您选择没有过滤器或不同的过滤器,因此更多功能.
内联TVFs也可用于替代标量UDF以提高效率as in this example.