看到标题 应该会奇怪 SqlBulkCopy 为什么会效率低下
场景:接手项目 数据库SQLSERVER2008R2, 目前有一张流水表单表数据超过4亿,表中建有索引,有其他模块对这个表进行查询操作,无其他写入操作,每天需要有将近100W的数据批量写入
目前 用SqlBulkCopy 进行批量插入,发现奇怪的现象, 每次批量插入1W条 耗时将近6~10分钟,之前有用过SqlBulkCopy批量插入47W也就6分钟左右
原因不明
现在排除分表等其他优化的可能 由于业务原因 目前无法进行读写分离操作
现在考虑为何SqlBulkCopy效率会这样慢
原因点:该表数据存量过大,已经超过亿万级,而且有几组索引,索引不能删除
通过配置了 SqlBulkCopy 的colummap 效率有所提升,但是不稳定 目前单次批量插入1W 依然超过了6分钟
不知道其他博友 有没有遇到过类似问题,欢迎提供解决思路
PS:什么读写分离 分表的建议就不要提出了哈,因为业务原因 目前现状不能做这个操作
把你要导入的数据按照目标表聚集索引顺序排序下再导,同时加下Order的hint。当然最好能临时拿掉非聚集索引。