我支持SQL Server 2000到2008R2(所有標準版)。關於視圖的問題
問題1
請考慮以下假設情況。假設您有一個5表格視圖,表格內部已加入。我們進一步假設我從每個表中拉出10個字段,所以我有一個總共有50個字段的View。如果我從視圖中選擇了兩個字段(兩個表中的每一個都有一個),那麼假設您擁有所有相同的表和連接,該查詢是否會比等效的表連接腳本慢?
問題2
如果我創造了這樣一個腳本的一般看法:
Create View SomeView
AS
select * from SomeTable
Go
這些表有字段添加到它們相當定期。每次我向「SomeTable」添加一個字段時,視圖都會自動工作,對嗎?這是否明顯慢 如果我SomeTable有50個字段,我從通用視圖中選擇他們兩個?如果我從選擇*視圖中選擇兩個字段,它只會查詢這些字段?
問題3 如果我創建像下面
Create View Blah
AS
select (some fields)
from TableA join TableB on TableA.Blah = TableB.Blah
Go
視圖然後我用這樣的觀點:
Select (some fields) from dbo.Blah where SomeDate >= '1/1/2008'
我會失去任何性能?優化器實際上是否只會拉取適用的視圖記錄,或者是否會全部拉出,然後再選擇結果集?
TIA。
別看使用`select *`創建一個視圖 - 這是一個非常糟糕的主意,因爲如果底層表發生變化,您可能會得到不同的數據值/類型 – RedFilter 2010-12-22 16:10:35