SQL索引视图:如果数据发生了变化会发生什么

时间:2010-01-07 20:11:31

标签: sql view indexed

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

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

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

谢谢。

2 个答案:

答案 0 :(得分:3)

来自technet文档:

  

与普通索引不同,只有一行   插入任何参与者   表可能会导致多行更改   在索引视图中。这是因为   单行可以与多个连接   另一个表的行。同样如此   如果更新和删除,则为true。   因此,维护一个   索引视图可能更昂贵   比保持一个索引   表

来源:

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

即。听起来好像在相关时更新了行,而不必完整地更新/重新创建视图。

答案 1 :(得分:0)

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