![]() |
1
1
可能是统计数据,但不是关于索引的 乐观者将获取第一个查询的更改行数/无统计信息。它决定重建/创建统计。 但是:可能存在与索引无关的列级统计信息。 第二次重新生成与stat无关,因为列stats已经存在,但它强制放弃并重新评估执行计划。 编辑:
|
![]() |
2
1
我怀疑仅仅在第一次添加索引并不能重建统计数据。在加载表之后,尝试对其执行dbcc dbreindex。您还可能希望确保您有一个聚集索引。 |
![]() |
3
1
也许完成索引只需要很长时间。第一次索引重建后,您等待了多长时间? 更新 :我看到这真的是一个周末的事情,这意味着索引第一次不能正常工作。在这种情况下,我没有任何建议超过目前所说的。 |
![]() |
4
1
删除索引 之前 您可以批量插入数据。这样可以更快地插入数据。在加载数据之前,还要禁用相关表上的任何触发器。 然后,添加索引。这样可以避免您当前正在进行的不必要的冗余索引重建。 另外,正如一位用户已经指出的那样,使用dbcc dbreindex而不是删除和重新添加索引更有意义。你也可以 update statistics 当然。 更新:由于dbcc dbreindex已被弃用(命令,而不是概念),请将alter index与rebuild选项一起使用。 |
![]() |
5
0
我假设在您的导入过程中,某些东西会导致索引数据在许多数据页上分布。重建它们解决了这个问题。 |
![]() |
6
0
我记得在某个地方读到过,SQL Server在创建索引时使用了当前的统计信息。如果统计数据过时,则可以针对错误的情况优化正在创建的索引,并给出性能不佳的结果。 在创建索引之前,请尝试更新表上的统计信息。 这个 UPDATE STATISTICS BOL中的条目表示可能发生这种情况:
因为您已经将数百万行导入到一个空表中,所以我认为您已经访问了上面的一个案例。 |
![]() |
ybou · 需要帮助从SQL 2005查询中删除过时的=*连接运算符 7 年前 |
![]() |
Robert · 将多个分隔符分隔的字段视为不同的行 8 年前 |
![]() |
hud · 执行存储过程会导致错误 9 年前 |
![]() |
Gonzalo · 如何将存储过程的结果插入到新表中? 9 年前 |