2011-05-13 68 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

雖然任何視圖幾乎可以平均轉換爲內聯表值函數,但反過來卻是不正確的。

如果構造需要參數化,則使用內聯表值函數。內聯表值函數基本上是參數化視圖,就優化器而言,它們能夠將它們與視圖結合起來並推進。多語句表值函數根本不像內聯表值函數。

如果您不能使用內聯表值函數執行此操作,請使用多語句表值函數。