3

我不明白索引视图是什么,但我想知道当底层表中的数据发生变化时究竟会发生什么?整个视图缓存是否被丢弃或只是更改了行?

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

或者任何想法如何“缓存”非常复杂的查询?

谢谢你。

4

2 回答 2

4

从技术网文档:

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

来源:

http://technet.microsoft.com/en-us/library/cc917715.aspx#XSLTsection124121120120

即听起来好像行在相关的地方被更新,而不必更新/重新创建整个视图。

于 2010-01-07T20:18:37.747 回答
0

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

于 2010-01-07T20:38:55.863 回答