2011-05-13 42 views
20

任何人都有一个很好的决策树来决定何时使用视图以及何时在SQL Server中使用表值函数?SQL Server视图或表值函数?

+2

也许,我可以重新提出问题。通过使用视图或表值函数,我可以轻松完成我需要做的事情。那么,经验法则是使用视图吗? – Striker 2011-05-13 14:36:35

+1

是的,如果它是一个真正的普通视图,并且你不使用像OPENROWSET或CONTEXT_INFO这样的花式技巧。 – 2011-05-13 14:42:32

+5

另请参见[表值函数与视图](http://stackoverflow.com/questions/4960137/table-valued-function-vs-view/4960468#4960468) – 2011-05-13 19:10:42

回答

2

在视图中你不能做某些事情(比如表变量,返回结果集之前的中间结果等)......如果你不需要这些,查看,如果你这样做,sproc/udf :-)

-1

好吧,我会给我们用的。我们有表格,但我们从不访问表格,而是关于表格的观点。这只是一个安全问题。

13

虽然任何视图几乎可以平均转换为内联表值函数,但反过来却是不正确的。

如果构造需要参数化,则使用内联表值函数。内联表值函数基本上是参数化视图,就优化器而言,它们能够将它们与视图结合起来并推进。多语句表值函数根本不像内联表值函数。

如果您不能使用内联表值函数执行此操作,请使用多语句表值函数。