我有几个关于 SqlBulkCopy 的问题。
我需要从我的业务组件向表中插入几百万条记录。我正在考虑以下方法:
- 使用 SqlBulkCopy 将数据直接插入到目标表中。因为该表具有现有数据和索引(我无法更改),所以我不会获得批量日志记录行为并且无法应用 TabLock。
- 使用 SqlBulkCopy 一次性将数据插入到 temp db 中的堆中(batchsize = 0)。完成后,使用存储过程将数据从临时表移动到目标表。
- 使用 SqlBulkCopy 将数据插入临时数据库中的堆中,但指定批处理大小。完成后,使用存储过程将数据从临时表移动到目标表。
- 拆分数据并使用多个 SqlBulkCopy 同时插入临时数据库中的多个堆。上传每个数据块后,使用存储过程将数据从临时表移动到目标表。
哪种方法的端到端时间最短?
如果我使用 SqlBulkCopy 将数据上传到有索引的表中,我可以同时查询该表吗?