将数据从单个客户端(或数据流)导入到空表中时,Microsoft 建议执行下列操作:
- 指定 TABLOCK 限定符(在所有三种大容量导入方法中都可以使用,可以是提示或选项)。使用 TABLOCK 会导致在大容量操作期间进行表级锁定,并消除按行锁定的开销。有关详细信息,请参阅控制大容量导入的锁定行为。
- 最小化日志。有关详细信息,请参阅在大容量导入中按最小方式记录日志的前提条件。
- 对索引进行如下处理。
使用 bcp、BULK INSERT 或 INSERT ...SELECT * FROM OPENROWSET(BULK...) 时,如果表为空但有聚集索引,并且数据文件中的数据进行了排序以与聚集索引键列匹配,则还应执行下列操作:
- 大容量导入已带有聚集索引的数据。
- 指定 ORDER 提示以及 TABLOCK 提示。有关详细信息,请参阅控制大容量导入数据时的排序顺序。
对于空表,此方法明显快于导入数据后再创建聚集索引,因为它不需要执行排序。
如果将数据大容量导入到带有索引的空表中并指定批的大小,则在导入第一批数据后表将变成非空表。从第二批开始,数据将完整地记入日志。对于带有索引的空表,请考虑用一批完成整个大容量导入。
通常,大容量导入到不带索引的表中要快于大容量导入到带索引的表中。因此,如果空表带有索引,则应该在导入数据前删除索引,等导入后再重新创建。如果数据未按照聚集键列进行排序,或者表为空表,请删除所有索引,导入数据,然后再创建新的索引。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/21057.html