首页 > 解决方案 > 当数据频繁更改时创建索引视图是否有意义?

问题描述

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

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

在每个表上创建索引并不聪明,因为数据会不断增长,索引会比数据本身大(开玩笑,但在这种情况下真的不聪明)

那么,您对我实现目标的建议是什么,以创建一个性能足以在每次我需要数据时击败正常语句的视图。

标签: sql-serverindexed-view

解决方案


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

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

仅基于您提供给我们的信息,主要问题是业务需求,这将有助于确定您的数据库架构:表更新频率、视图查询频率、更新速度和视图查询需要执行,以及视图数据需要的最新程度。

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

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

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


推荐阅读