c# - 高性能数据插入 SQL Server

标签 c# sql sql-server database sql-server-2012

我将大约 700 万行插入到 SQL Server 的表中。该表有大约 9-10 列,它在 2 个键(列)上有一个聚集索引和另外 3 个非聚集索引。我正在尝试做高性能/批量插入数据,但插入300万条记录后速度很慢,磁盘使用率高达99%。以下是我为加快此过程所做的工作:

1) 禁用所有非聚集索引。我没有禁用2列聚集索引,因为聚集索引禁用后无法插入数据?

2) 我正在使用 C# SqlBulkCopy 每次批量插入 5,000 条记录。

3) 该表没有任何约束和触发器

我应该做些什么来加快这个数据插入过程?

最佳答案

摆脱所有索引。每次使用索引写入时,在写入每条记录时都必须重新构造物理页面。使用代码 (DROP INDEX) 转储所有索引,插入数据,然后使用代码 (CREATE INDEX) 重新构建索引。

关于c# - 高性能数据插入 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17028674/

相关文章:

C# : How to resize image proportionately with max height

Mono 上的 C# 用户控制?

SQL 加入 CASE 和 WHERE

SQL:如何从另一个表中删除满足条件的行

sql-server - T-SQL 通过存储过程选择、操作和重新插入

c# - 如何检测并在外部子流程调用错误对话框时使用react

c# - 句柄无效。 (来自 HRESULT : 0x80070006 (E_HANDLE)) 的异常

MySQL 在两个地方 JOIN 两个表

.net - 如何使用 .NET 执行多个 Oracle SQL 语句

c# - 使用 Distinct 和 Order By 时 Entity Framework 中的多个查询和性能不佳