我想创建一个视图,将表现出相同的特性,因为它从创建视图,索引
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