我不知道索引视图是什么,但我想知道当底层表中的数据被更改时究竟发生了什么? 整个视图缓存是否被丢弃,只是更改了行?
我对几个表(+5)进行了非常复杂的查询,用于搜索酒店可用性(+ 100k记录),IMHO索引视图可以显着提高性能。 但是数据(几行)经常更改(房间已售出,免费房间在admin atc中更改。)如果每次只更改一行时视图将重建,那么我的应用程序将成为瓶颈。
或者如何“缓存”非常复杂的查询?
谢谢。
答案 0 :(得分:3)
来自technet文档:
与普通索引不同,只有一行 插入任何参与者 表可能会导致多行更改 在索引视图中。这是因为 单行可以与多个连接 另一个表的行。同样如此 如果更新和删除,则为true。 因此,维护一个 索引视图可能更昂贵 比保持一个索引 表
来源:
http://technet.microsoft.com/en-us/library/cc917715.aspx#XSLTsection124121120120
即。听起来好像在相关时更新了行,而不必完整地更新/重新创建视图。
答案 1 :(得分:0)
我假设你正在运行sql server。 100k +行不是很多。如果您要加入5个表,我建议您在考虑实现索引视图之前确保在您加入的列上有覆盖索引。使用查询分析器直接在查询中查找瓶颈。如果你在如此小的表上遇到性能问题,那里可能会有令人讨厌的表扫描。