C#与数据库的一些效率测试

本文通过测试分析了C#插入数据库的三种方法:直接SQL插入、参数化SQL和DataTable更新,以及查询效率,包括Select Top 1、Select *与指定列。此外,还探讨了多线程并发下数据库访问的性能,并对比了字符串拼接的不同方法。测试结果显示,不同场景下各方法的效率各有优劣,适合的应用场景也不同。
摘要由CSDN通过智能技术生成

 

数据库效率

 

测试用表:4列,一列为int类型,2varchar1char

 

添加

往数据库里添加数据目前测试了3个方案

1.  根据数据生成sql语句,直接插入

2.  采用sql传参数的方式插入

3.  采用DataTable更新的方法

 

测试结果:

       在插入5000条记录的时候,方案1和方案2的事件都在2.3s~2.4s,方案1比方案2略快一点,方案3事件在12s上下

       从代码的角度上来看,如果可以预知要存储的数据里不带单引号,用方案1还可以再加快一点点数据。不过我倾向使用方案2

 

测试代码:

       方案1:直接生成sql语句

              StringBuilder strSql=new StringBuilder();

              strSql.Append("insert into andString(");

              strSql.Append("ID, string1,string2,string3");

              strSql.Append(")");

              strSql.Append(" values (");

              strSql.Append(""+model.ID.ToString()+",");

              strSql.Append("'"+model.string1.Replace("'", "''") +"',");

              strSql.Append("'"+model.string2.Replace("'", "''") +"',");

              strSql.Append("'"+model.string3.Replace("'", "''") +"'");

              strSql.Append(")");

              DbManagerSQL.ExecuteSql(strSql.ToString());

 

       方案2:传参数

              StringBuilder addstrSql=new StringBuilder();

              addstrSql.Append("insert into andString(");

              addstrSql.Append("ID,string1,string2,string3)");

              addstrSql.Append(" values (");

              addstrSql.Append("@ID,@string1,@string2,@string3)");

              SqlParameter[] parameters = {

                                                   new SqlParameter("@ID", SqlDbType.Int,4),

                                                   new SqlParameter("@string1", SqlDbType.VarChar,200),

                                                   new SqlParameter("@string2", SqlDbType.VarChar,2000),

                                                   new SqlParameter("@string3", SqlDbType.Char,20)};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值