2011-03-28 86 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'; 

索引是否将用于或不是另一个问题。