创建带有索引的视图

发布于 2024-10-27 03:20:19 字数 308 浏览 1 评论 0原文

我想创建一个视图,它将显示与其查询的表相同的属性

CREATE VIEW Agent_View
AS 
SELECT * FROM Agent_table

我想知道是否需要创建与 Agent_View 中的 Agent_table 相同的索引> 也。

我是否需要将 Agent_View 声明为 schemabound 才能创建索引。是否有任何解决方法可以在不声明为 schemabound 的情况下创建索引?

I wanted to create a view, that will exhibit the same property as the table it queries from

CREATE VIEW Agent_View
AS 
SELECT * FROM Agent_table

I want to know if I need to create the same indexes as the Agent_table in the Agent_View also.

Do I need to declare the Agent_View as schemabound to create index. Is there any workaround to create indexes without declaring as schemabound ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

下壹個目標 2024-11-03 03:20:19

您无法使用 SELECT * 在视图上创建索引,因为您无法使用 WITH SCHEMABINDING

没有索引的视图只是一个扩展到外部查询的宏。所以无论如何都会使用表索引。从架构角度来看,该视图不存在。

最后,恕我直言,这可能是视图的最无意义的使用。它增加了零值

You can't create indexes on the view with SELECT * because you can't have WITH SCHEMABINDING

A view without indexes is just a macro that expands into the outer query anyway. So table indexes will be used anyway. The view doesn't exist from a schema perspective.

Finally, IMHO this is possibly the most pointless use of a view possible. It adds zero value.

汹涌人海 2024-11-03 03:20:19

大多数(如果不是全部)针对此视图的查询的行为就像直接使用底层表一样。

因此,如果您在 agent_table 中对 agent_name 建立索引,并执行如下查询:

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

...它将被优化器重写为:

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

是否使用索引是另一个问题问题。

Most (if not all) queries against this view will behave as if you used the underlaying table directly.

Thus if you indexed agent_name in agent_table, and performed a query like:

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

...it would be rewritten by the optimizer to:

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

Whether the index would be used or not is another question.

挽心 2024-11-03 03:20:19

如果您有任何复杂的查询,您可能需要创建索引视图,但在您的情况下将使用表的索引。

MSDN 参考

You may want to create indexed views if you have any complex queries, but in your case the table's indexes will be used.

MSDN reference

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文