这是ALTER VIEW drop Index from View问题的后续行动。
接受的响应表明 ALTER VIEW 将自动删除任何已定义的索引。
这与其他类似操作的发生方式有些反直觉:
- 很自然地期望相关的事情,例如权限或索引被丢弃在对象丢弃而不是改变
- 更改表不会删除任何索引(实际上您必须删除索引、约束等内容)
我想知道为什么首先默认具有这种行为(即在某些情况下是否存在任何客观方面,例如由于视图更改而导致性能降低)。
问题:删除所有索引以更改视图的基本原理是什么?
这是ALTER VIEW drop Index from View问题的后续行动。
接受的响应表明 ALTER VIEW 将自动删除任何已定义的索引。
这与其他类似操作的发生方式有些反直觉:
我想知道为什么首先默认具有这种行为(即在某些情况下是否存在任何客观方面,例如由于视图更改而导致性能降低)。
问题:删除所有索引以更改视图的基本原理是什么?
Kendra Little在她最近的博文中提出了一些很好的理论来解释为什么会发生这种情况: Altering an indexed view in SQL Server drops all indexes
更改视图可能会完全改变数据的结构——列数、行数、行的大小等。所以基本上无论如何都需要删除并重新创建表。
我发现第二点,关于更改与索引视图限制相冲突的可能性有多大,特别引人注目。
就像 Kendra 稍后提到的,以及其他人在此处的评论中提到的那样,如果一个人被简单地阻止更改索引视图,那就太好了。但由于向后兼容性问题,这种变化可能永远不会发生。