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

问题描述 投票:0回答:1

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

我已阅读有关索引视图的内容,并且可以在连续查询时提高性能。但是表格/数据分别是连续更新的,视图背后的语句只是不时地返回数据集的一小部分(有时每小时,但有可能它每天或每周都会变化,它会波动)。

在每个表上创建索引并不聪明,导致数据增长和增长,索引将比数据本身更大(只是开玩笑但在这种情况下它真的不聪明)

那么你有什么建议让我达到我的目标,即创建一个足够高效的视图,以便在每次需要数据时都能胜过正常的语句。

sql-server indexed-view
1个回答
0
投票

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

一个重要的信息是5个底层表的索引。如果这些索引对视图有用,那么查询优化器将使用它们,因此视图上的索引可能不会使视图更快。

基于您提供给我们的信息,主要问题是业务需求,这将有助于确定您的数据库体系结构:表更新的频率,查询的频率,更新和查询查询需要多快执行,以及视图数据需要的当前状态。

  1. 如果视图查询性能比表更新的速度更重要,则使用索引视图。
  2. 如果视图数据可以缓存而不是最新,并且表更新速度很重要,那么您可以定期将所有表数据复制到报表中,例如每天或每小时一次。在该报告表上,您可以创建快速读取查询的索引。
  3. 如果视图性能不重要,但视图数据必须是最新的,并且如果表更新速度很重要,那么您可能必须使用非索引视图,并且可能依赖于每个视图查询的表扫描。
© www.soinside.com 2019 - 2024. All rights reserved.