SQL Server 视图还是表值函数?

20

有没有一个好的决策树,可以帮助我们在 SQL Server 中决定何时使用视图,何时使用表值函数?


2
也许我可以重新表达问题。我可以通过使用视图或表值函数轻松完成我需要做的事情。那么使用视图是一个经验法则吗? - Striker
1
是的,如果它是一个真正的普通视图,并且您没有使用OPENROWSET或CONTEXT_INFO等花哨的技巧。 - Cade Roux
5
请参见表值函数与视图 - Martin Smith
9
JonH,如果人们不比较看起来做同样事情的东西,那么他们就不知道在什么情况下使用一种而不是另一种。那是一个顽固的评论,我从未见过这样的评论。他的问题是完全合理的。 - brumScouse
3个回答

13

尽管任何视图几乎都可以轻松转换为行内表值函数,但反之则不成立。

如果需要进行参数化,则使用行内表值函数。 行内表值函数基本上是优化器能够将它们与视图组合并推动操作的参数化视图。 多语句表值函数与行内表值函数完全不同。

如果无法使用行内表值函数,则使用多语句表值函数。


2

在视图中有一些你不能做的事情(例如使用表变量,在返回结果集之前使用中间结果等)... 如果你不需要这些,就使用视图;如果你需要,就使用存储过程/用户定义函数 :-)


-1

好的,我来解释一下我们的用途。我们有这些表格,但我们从未直接访问这些表格,而是通过与这些表格相关的视图进行访问。这只是一个安全问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接