2010-07-03 63 views
2

我有一個場景,我將兩個表合併成一個(使用UNION),並且還從其他表中加入數據。查看或用戶定義的功能?

我可以用一個視圖或UDF /用戶自定義功能做到這一點。

考慮到我在數據庫中目前爲止沒有任何視圖,但是有很多UDF用於全文搜索等,我很想在這種情況下使用UDF以保持它「乾淨」。

然而,這完全是主觀的,我想知道是否有更好的客觀原因去爲一個視圖或在這種情況下一個UDF。

我並比較兩者的查詢計劃,他們是完全一樣的,所以我不相信有性能損失或優勢,使用任何一個。

是否有其他理由選擇一個或另一個沒關係?

回答

5

我總是會按照複雜程度使用功能。在性能配置和安全管理方面,視圖相對比較簡單。我可能會首先使用它。

我假設你正在談論的聯表值UDF,這將具有相同的性能特點非常。 UDF上的安全性有點不同,你不能使用觸發器來在視圖上「插入」。 UDF的好處是你可以強制提供參數,從而確保使用模式符合預期,而視圖可以在沒有任何標準(可能是偶然)的情況下被查詢。

如果你確實希望有一個用於參數化的UDF,你可以將它放在視圖的頂部(所以沒有代碼重複),你會發現性能沒有顯着影響,因爲優化器可以結合視圖並內聯TVF相當成功。

1

一個優點我用這個場景作爲視圖看到的是指數和使用它們作爲其中不同於傳統的觀點存在被創建,因此查詢速度更快,其中有相當數量的行的物理文件「索引視圖」在裏面。使用這個的效果是繞過所有行的連接和聯合,而不是隻爲新行創建它們。

正如我們的朋友凱德建議,你反芻使用UDF內以保持它的清潔,這是不是一個很大的不同。

希望這會有所幫助!

+1

我無法創建索引視圖--UNION禁止視圖上的索引。或者我錯了? – Alex 2010-07-03 06:21:56