【发布时间】:2011-11-16 11:59:19
【问题描述】:
我创建了 Windows 应用程序 (C#.Net) 来将数据从一个数据库迁移到另一个数据库。 在这里,我从数据库 ABC 中选择客户表的所有行,并将所有行插入数据库 XYZ 的经销商表中。
我的问题是,当我从表中选择前 1000 行时,插入这 1000 条记录需要 2 分 35 秒。 但是当我从表中选择前 5000 行时,插入这 5000 条记录需要 15 分钟(不是 10 分钟)
有什么方法可以优化性能,以便我可以非常快速地插入所有记录/数据。 (注意:这里对于foreach循环中的每条记录,我都创建了sql参数并插入sql语句)
我也使用了进度条,但是当我从 Windows 应用程序失去焦点时,它变得无响应(不响应窗口标题)并且我看不到进度条的状态/进度(但插入数据的过程正在后台工作,但不在 UI 中)。
这两个问题怎么解决??
【问题讨论】:
-
不要逐行插入,使用某种bulk insert。
-
@MichałPowaga 我不能使用 BULK Insert,因为我必须使用代码检查许多条件。
标签: sql winforms performance sql-server-2008 progress-bar