SQL索引和更新时间

SQL索引和更新时间,sql,sql-server,tsql,indexing,Sql,Sql Server,Tsql,Indexing,我有一个表,有50列,非聚集索引大约有10列(FK)。该表包含约1000万条记录 我的问题是:在更新表中的10k行(更新包括索引列)期间,索引何时更新?它是在每次行更新之后还是在整个更新完成之后发生的 问题是更新时间很长,我们收到一个数据库连接超时。如何提高更新时间?我不能在更新之前删除索引,以后再重新生成索引,因为更新期间该表也被大量使用。您应该对该表进行分区,并尝试使用本地索引。 通过分区,您可以划分表数据,以便对相关数据进行操作 局部索引还意味着索引也被分区,所以速度将显著提高 查看此链接

我有一个表,有50列,非聚集索引大约有10列(FK)。该表包含约1000万条记录

我的问题是:在更新表中的10k行(更新包括索引列)期间,索引何时更新?它是在每次行更新之后还是在整个更新完成之后发生的


问题是更新时间很长,我们收到一个数据库连接超时。如何提高更新时间?我不能在更新之前删除索引,以后再重新生成索引,因为更新期间该表也被大量使用。

您应该对该表进行分区,并尝试使用本地索引。 通过分区,您可以划分表数据,以便对相关数据进行操作

局部索引还意味着索引也被分区,所以速度将显著提高


查看此链接:

您应该对表进行分区,并尝试使用本地索引。 通过分区,您可以划分表数据,以便对相关数据进行操作

局部索引还意味着索引也被分区,所以速度将显著提高


看看这个链接:

我们有一个庞大的系统,主表也有几百万条记录。。。。至少过去是这样。我们将超过6个月的数据移出归档表。通常,旧数据仅用于报告目的。通过这样做,我们能够大大提高实时系统的性能。尽管如此,这对您来说可能不是一个可行的解决方案。

我们有一个庞大的系统,主表也有数百万条记录。。。。至少过去是这样。我们将超过6个月的数据移出归档表。通常,旧数据仅用于报告目的。通过这样做,我们能够大大提高实时系统的性能。尽管如此,这对您来说可能不是一个可行的解决方案。

索引是否分段(更新表和FK表)?
列的类型,是否为空?
你能忍受肮脏的阅读(nolock)吗?
你能忍受不检查FK合同吗

请发布更新声明?
我相信您正在检查是否使用相同的值更新

update tt 
set col1 = 'newVal' 
where col1 <> 'newVal'
更新tt
set col1='newVal'
col1'newVal'在哪里
如果这些索引处于良好状态,那么10 K行的更新应该非常快。

填充因子可能会有所帮助

索引是否分段(更新表和FK表)?
列的类型,是否为空?
你能忍受肮脏的阅读(nolock)吗?
你能忍受不检查FK合同吗

请发布更新声明?
我相信您正在检查是否使用相同的值更新

update tt 
set col1 = 'newVal' 
where col1 <> 'newVal'
更新tt
set col1='newVal'
col1'newVal'在哪里
如果这些索引处于良好状态,那么10 K行的更新应该非常快。

填充因子可能会有所帮助

索引已更新。。。当它们被更新时。如果它们是非聚集索引,并且您没有更改它们的键或覆盖列,则它们可能永远不会更新。看看执行计划。如果您的连接超时,但您确信更新将完成,那么您可能遇到了默认超时不适合您的情况。如果你不能将更新分解成更小的部分,也许你可以尝试或多或少的主动锁定。以此类推。索引提高了选择和读取数据的速度,但却降低了更新的速度。如果你通常做更多的更新而不是选择,索引对你来说可能适得其反索引会被更新。。。当它们被更新时。如果它们是非聚集索引,并且您没有更改它们的键或覆盖列,则它们可能永远不会更新。看看执行计划。如果您的连接超时,但您确信更新将完成,那么您可能遇到了默认超时不适合您的情况。如果你不能将更新分解成更小的部分,也许你可以尝试或多或少的主动锁定。以此类推。索引提高了选择和读取数据的速度,但却降低了更新的速度。如果您通常进行更多的更新而不是选择,则索引可能会适得其反。不幸的是,此表包含无法移动到存档的“活动”数据:(不幸的是,此表包含无法移动到存档的“活动”数据:(感谢链接,这是我应该调查的新内容。也许这是我们需要的。感谢链接,这是我应该调查的新内容。也许这是我们需要的。