我想創建一個視圖,將表現出相同的特性,因爲它從創建視圖,索引
CREATE VIEW Agent_View
AS
SELECT * FROM Agent_table
我想知道如果我需要創建同一指標爲Agent_table查詢表也在Agent_View也。
是否需要聲明Agent_View作爲schemabound來創建索引。有沒有解決方法來創建索引而不聲明爲schemabound?
我想創建一個視圖,將表現出相同的特性,因爲它從創建視圖,索引
CREATE VIEW Agent_View
AS
SELECT * FROM Agent_table
我想知道如果我需要創建同一指標爲Agent_table查詢表也在Agent_View也。
是否需要聲明Agent_View作爲schemabound來創建索引。有沒有解決方法來創建索引而不聲明爲schemabound?
不能與SELECT *
視圖創建索引,因爲你不能有WITH SCHEMABINDING
視圖沒有索引僅僅是一個擴展到外部查詢反正宏。所以表索引將被使用。從模式角度看,該視圖不存在。
最後,恕我直言,這可能是最無意義的視圖使用可能。它增加了零值。
如果您有任何複雜的查詢,您可能希望創建索引視圖,但在您的情況下將使用表索引。
針對此視圖的大多數(如果不是全部)查詢將表現得如同直接使用底層表一樣。
因此,如果您在agent_table
索引agent_name
,並等來進行查詢:
select *
from agent_view
where agent_name = 'James Bond';
...這將通過優化改寫爲:
select *
from agent_table
where agent_name = 'James Bond';
索引是否將用於或不是另一個問題。
我不認爲你需要在視圖上創建索引。表格的索引將被使用。 – 2011-03-28 07:45:50