我一次在一组表中写入数百或可能数千行,每个表都严重在内部和通过索引视图编制索引。
通常,插入行在插入行将在索引中相邻的位置发生。
我希望这些插页很昂贵,但它们非常慢。我认为性能问题的一部分是每个INSERT都在更新索引。
有没有办法告诉SQL Server推迟更新索引,直到我完成我的批量插入,这样索引树只需要更新一次?
这些作为单独的语句执行,因为需要在保存期间向用户显示进度条并记录任何单个问题,但这些都来自C#中的相同连接。如果需要,我可以将它们放在交易中,但我不愿意。
答案 0 :(得分:0)
您正在支付以某种方式将这些行添加到索引的成本。在插入期间不更新索引会导致并发语句的准确性问题 - 对该表使用任何索引的任何查询都不会“看到”新行!
如果速度至关重要,并且插入后的停机时间不是主要问题,您可以:
你可能应该更多地澄清一下你的桌子:
如果您有20个索引且每个索引有5个字段,那么您实际上每行更新100个额外字段,这会很快变得昂贵。