我有一个用C#编写的SP,可以计算大约200万行。计算大约需要3分钟。对于每一行,结果以三个数字的形式生成。 这些结果被插入临时表中,以后以某种方式处理。 结果以块的形式添加,插入有时超过200分钟(是的,超过3小时!)。有时它只需“50分钟”。 我已对其进行了修改,因此结果会保留在内存中直到结束,然后在一个事务中的一个循环中将整个2百万个转储。仍然 - 大约需要20分钟。 使用事务begin / commit在SQL中编写的类似循环只需不到30秒。 任何人都知道问题出在哪里? 处理2百万(因此选择它们等)需要3分钟,将结果插入最佳解决方案20分钟。 更新:此表在标识列上有一个聚簇索引(以确保在末尾物理附加行),没有触发器,没有其他索引,没有其他进程正在访问它。
答案 0 :(得分:0)
只要我们都模糊不清,这里有一个模糊的答案。如果插入2mil的行需要很长时间,我会按顺序检查四个问题: