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