Zer*_*ity 10 index sql-server view materialized-view
我有一个带有聚集索引和 2 个非聚集索引的表。现在,在我看来,我正在从我的表中选择所有内容
create view dbo.MyView
as
Select * from MyTable
Run Code Online (Sandbox Code Playgroud)
现在,当我在查询中使用这个视图时,我可以假设这个视图将利用在表上创建的索引。(即与Select * from MyTable 的工作方式相同)?或者我应该使用索引视图
补充问题
如果视图可以利用表索引,那么使用SELECT * FROM MyView Where SomeColumn = @someValue可能会严重影响性能(如果视图有大量数据,那么它在没有索引时会表现得像堆)。如何克服这个问题?除了使用 NOEXPAND(因为我使用的是企业版)
spa*_*dba 15
视图只是一个“保存的查询”。每当您访问视图时,仍会使用基表上的索引。
您不需要使用索引视图,除非视图包含您不想在每次查询视图时都执行的昂贵逻辑(聚合或连接)。请注意,即使视图被“物化”,优化器也可以直接访问基表及其索引,而完全忽略视图上的索引。
另请注意,保持视图上的索引与基表中的数据对齐是很昂贵的:每次写入基表之一时,您还必须更新视图上的索引。
| 归档时间: |
|
| 查看次数: |
11187 次 |
| 最近记录: |