在数据频繁更改时创建索引视图是否有意义?

时间:2019-04-18 15:56:36

标签: sql-server indexed-view

我大约有5个表,每个表中都有超过1,000,000个数据集。

我已经阅读了有关索引视图的知识,它们可以提高连续查询的性能。但是表/数据是分别连续更新的,视图后面的语句只是偶尔返回一部分数据集(有时每小时一次,但有可能每天或每周都在变化,并且波动)。

在这些表中的每个表上创建索引并不明智,因为数据将不断增长,并且索引将比数据本身更大(只是在开玩笑,但在这种情况下,这确实不明智)

那么,您对我的建议有何建议?每次创建数据时,创建一个性能足以胜过常规语句的视图。

1 个答案:

答案 0 :(得分:0)

这不是一个确定的答案,而只是一些需要考虑的一般想法。

重要信息之一是5个基础表具有哪些索引。如果这些索引对视图有帮助,则查询优化器将使用它们,因此视图上的索引可能不会使视图变快。

仅基于您提供给我们的信息,主要问题就是业务需求,这将有助于确定您的数据库体系结构:表多长时间更新一次,查询视图多长时间一次,更新和更新的速度如何?视图查询需要执行,以及视图数据需要如何更新。

  1. 如果视图查询性能比表更新速度更重要,请使用索引视图。

  2. 如果视图数据可以缓存且不是最新的,并且表更新速度很重要,则可以定期将所有表数据复制到报表中,例如每天或每小时一次。在该报表上,您可以创建索引以进行快速读取查询。

  3. 如果视图性能并不重要,但是视图数据必须是最新的,并且如果表更新速度很重要,那么您可能必须使用非索引视图,并可能依赖于表扫描每个视图查询。