2011-03-28 104 views
1

我想創建一個視圖,將表現出相同的特性,因爲它從創建視圖,索引

CREATE VIEW Agent_View 
AS 
SELECT * FROM Agent_table 

我想知道如果我需要創建同一指標爲Agent_table查詢表也在Agent_View也。

是否需要聲明Agent_View作爲schemabound來創建索引。有沒有解決方法來創建索引而不聲明爲schemabound?

+0

我不認爲你需要在視圖上創建索引。表格的索引將被使用。 – 2011-03-28 07:45:50

回答

3

不能與SELECT *視圖創建索引,因爲你不能有WITH SCHEMABINDING

視圖沒有索引僅僅是一個擴展到外部查詢反正宏。所以表索引將被使用。從模式角度看,該視圖不存在。

最後,恕我直言,這可能是最無意義的視圖使用可能。它增加了零值

1

如果您有任何複雜的查詢,您可能希望創建索引視圖,但在您的情況下將使用表索引。

MSDN reference

2

針對此視圖的大多數(如果不是全部)查詢將表現得如同直接使用底層表一樣。

因此,如果您在agent_table索引agent_name,並等來進行查詢:

select * 
    from agent_view 
where agent_name = 'James Bond'; 

...這將通過優化改寫爲:

select * 
    from agent_table 
where agent_name = 'James Bond'; 

索引是否將用於或不是另一個問題。