我正在编写一个命令行工具(在Windows 7上运行),它将一条记录插入表中然后退出。我正在使用C#(.NET 4.5)和SQL Server 2008。
数据记录包含一个大的(最多6000个字节)字符串,一个时间戳和一个自动递增的整数ID主键。桌子上没有附加外键。
此外,由于这是此数据库最常见的使用方案,我想优化它。有关如何设置数据库以帮助保持单个插入时间较低的技巧吗?
[编辑] 我正在使用的代码......
SqlConnection con = new SqlConnection(ConnectionString);
con.Open();
SqlTransaction trans = con.BeginTransaction();
SqlCommand cmd = new SqlCommand("INSERT INTO [msglog](message,project,username,computername,updated_at) VALUES (@m,@p,@u,@c,@i,@t)", con, trans);
cmd.Parameters.AddWithValue("@u", Username);
cmd.Parameters.AddWithValue("@c", Computername);
cmd.Parameters.AddWithValue("@m", msg);
cmd.Parameters.AddWithValue("@p", ProjectName);
cmd.Parameters.AddWithValue("@t", DateTime.Now);
cmd.ExecuteNonQuery();
trans.Commit();
答案 0 :(得分:2)
在您的代码示例中,我怀疑大部分时间都花在与SQL Server建立连接上。我建议:
可能还有其他微观优化,但真正解决我上面的第一个问题会给你带来最显着的加速。
答案 1 :(得分:2)
我的建议是创建一个连接数据库的Windows服务。您的应用程序将向服务发送消息,而服务又会异步发送数据库更新。其他答案显示了SQL方面提高性能的好方法。
答案 2 :(得分:1)
尽可能在您插入的桌子上消除这些:
同时确保使用此表没有索引视图。