Stored procedures 由于关联的索引视图,基础表上的更新/插入速度减慢

Stored procedures 由于关联的索引视图,基础表上的更新/插入速度减慢,stored-procedures,sql-server-2014,indexed-views,Stored Procedures,Sql Server 2014,Indexed Views,我们有一个存储过程,它根据某些条件更新表。在同一个存储过程中,在某些其他条件下插入到同一个表中。现在,这个目标表有一组关联的索引视图,这会减慢更新和删除的速度。我们现在要做的是在加载之前禁用视图上的索引,然后在加载之后重新构建它们。重建需要将近半个小时,但如果我们不禁用此功能,索引视图将重建一次,用于更新,一次用于插入 我的问题是: 更新和插入,它们是为每行重新创建视图,还是为更新/插入中受影响的所有行重新创建视图 是否有一种方法可以批量插入和更新,以便在所有插入和所有更新之后只触发一次索引视图

我们有一个存储过程,它根据某些条件更新表。在同一个存储过程中,在某些其他条件下插入到同一个表中。现在,这个目标表有一组关联的索引视图,这会减慢更新和删除的速度。我们现在要做的是在加载之前禁用视图上的索引,然后在加载之后重新构建它们。重建需要将近半个小时,但如果我们不禁用此功能,索引视图将重建一次,用于更新,一次用于插入

我的问题是:

  • 更新和插入,它们是为每行重新创建视图,还是为更新/插入中受影响的所有行重新创建视图

  • 是否有一种方法可以批量插入和更新,以便在所有
    插入
    和所有
    更新
    之后只触发一次索引视图

  • 索引视图访问正在更新/插入的表中的一列。现在,即使该特定列本身没有更改,但表中的某个其他列已更新,也会重新创建该索引视图


  • 问题,为什么视图上有索引,并因此而具体化?更具体地说,这是一个基于假设的选择,还是你确定你需要它们?我们需要它们。这相当广泛。你能详细说明一下吗?我们有一个页面,它加载了一些具有数百万行的聚合。我们正在将其转移到一个单独的报告服务器。同时,这些需要保留为索引视图,以便能够及时加载页面。