SQL索引视图:如果数据已更改,会发生什么情况

SQL索引视图:如果数据已更改,会发生什么情况,sql,view,indexed,Sql,View,Indexed,我不知道索引视图是什么,但我想知道当参考底图表中的数据被更改时会发生什么? 整个视图缓存是否已丢弃?是否仅更改了行 我对几个表(+5)进行了非常复杂的查询,这些表用于搜索酒店可用性(+100k记录),IMHO索引视图可以显著提高性能。 但是数据(几行)经常更改(房间已售出,免费房间在管理atc中更改)。如果每次仅更改一行时都要重建视图,这将成为我的应用程序的瓶颈 或者如何“缓存”非常复杂的查询 谢谢。来自technet文档: 与普通索引不同,一行 插入任何参与 表可能会导致多行更改 在索引视图中

我不知道索引视图是什么,但我想知道当参考底图表中的数据被更改时会发生什么? 整个视图缓存是否已丢弃?是否仅更改了行

我对几个表(+5)进行了非常复杂的查询,这些表用于搜索酒店可用性(+100k记录),IMHO索引视图可以显著提高性能。 但是数据(几行)经常更改(房间已售出,免费房间在管理atc中更改)。如果每次仅更改一行时都要重建视图,这将成为我的应用程序的瓶颈

或者如何“缓存”非常复杂的查询


谢谢。

来自technet文档:

与普通索引不同,一行 插入任何参与 表可能会导致多行更改 在索引视图中。这是因为 单行可以与多行连接 另一个表的行。同样是 对于更新和删除,为true。 因此,维护 索引视图可能更昂贵 而不是在 桌子

资料来源:


i、 e.听起来好像行是在相关位置更新的,而不必更新/重新创建整个视图。

我假设您正在运行sql server。10万多行不是很多。如果您要连接5ish表,我建议您在考虑实现索引视图之前,确保要连接的列上有覆盖索引。使用查询分析器直接查找查询中的瓶颈。如果您在如此小的表上遇到性能问题,那么可能会有令人讨厌的表扫描。

如果您在连接5个10万行的表时遇到性能问题,那么我怀疑查询中的某个地方存在问题,因此将其移动到索引视图中只会使数据库服务器更频繁地重新运行效率低下的查询。我建议查看原始查询的执行计划,特别是查找表扫描,以查看是否可以在进一步处理索引视图之前对其进行返工和/或改进索引以使其运行得更快。Hi。在调试SQL脚本时,检查表扫描(和模拟慢速任务)的执行计划是我经常做的第一件事。这个查询有很多自定义项,在我将它们移动到索引视图后,它们不是一直计算的,而且性能非常好。我使用索引视图重写了我的SP,性能令人震惊!。我希望在重建索引视图时不会有大的额外维护。