我的软件需要花费大量时间在SQL Server 2008 R2中添加大约2500行,但我在2005年遇到了同样的问题。
我没有使用事务,我不需要太多性能,但我不明白为什么执行时间不恒定。
每个插页都会创建新的SqlCommand
和SqlConnection
,汇集设置为true。
通常插入需要3/4毫秒......但是每3/4插入一次我有200毫秒的执行时间!!!
这意味着我需要更多200ms才能插入3行或4行。
我正在使用sql本地客户端从另一台PC上通过网络工作,在本地计算机上运行相同的应用程序它的工作速度要快得多。
答案 0 :(得分:0)
使用批量插入
我不确定您是否使用MS企业库,您可以执行以下操作:
using (DbConnection connection = db.CreateConnection())
{
connection.Open();
DbTransaction transaction = connection.BeginTransaction();
try
{
// insert a bunch of rows here. You could try to insert all 2500, but that leaves your transaction open for the whole duration. Or you could break it into 100 inserts. Test it out to see what suits your application better.
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
}
connection.Close();
}
要点是,如果您对一堆插入使用相同的事务而不是每个插入一个事务,那么您将更少地写入日志,从而使其更快。