出于参数的原因,可以说它适用于SQL 2005/8。我知道,当您将索引放在表格上以调整SELECT
语句时,这些索引需要在执行/UPDATE
/DELETE
操作期间保留。MS-SQL何时维护表索引?
我的主要问题是:
如果将SQL Server的维护表的索引?
我有很多后续问题:
我天真地以为它会做这样的命令已被执行之后。假设您要插入20行,它将在插入并提交20行后维护索引。
在一个 脚本特性为多条语句 对表的情况下,会发生什么,但在其他方面 不同的语句?
服务器是否具备智能 所有 语句执行后维持索引或它做 它每次发言?
我在哪里见过索引后,大型删除和重建情况/多INSERT
/UPDATE
行动。
这大概即被重建 整个表的索引,即使你只 行更改了一把?
会不会有在试图整理
INSERT
和UPDATE
行动统一到一个更大的批次性能优势 , 说,通过收集排在 临时表中插入,而不是做 许多较小的刀片?- 如何整理上面的堆,以防止删除索引与维护命中?
对不起,问题越来越多 - 这是我一直知道要注意的事情,但是当尝试调整脚本以获得平衡时,我发现实际上我并不知道索引维护何时发生。
编辑:我知道性能问题在很大程度上取决于插入/更新过程中的数据量和索引的数量。再次为了参数的缘故,我有两种情况:
- 一个索引重调整表 选择。
- 一个索引灯表(PK)。
这两种情况都会有一个大的插入/更新批次,比如10k +行。
编辑2:我知道能够对数据集上的给定脚本进行概要分析。然而,分析并不能告诉我为什么某种方法比另一种更快。我对索引背后的理论更感兴趣,也是性能问题的源泉,而不是一个明确的“这比这更快”的答案。
谢谢。
好问题。对于第二部分,它将完全依赖于索引的数量和内容,以确定是否更快地删除和重建,或只是在索引之上更新。与SQL中的大多数事情一样,100%的时间都没有正确的答案或方法。 – JNK 2010-09-21 15:09:49
@JNK我推测,我希望有人可以将这种情况放在一边,或者解释某种方法开始变得昂贵的情况。 – 2010-09-21 15:11:16