问题描述
MS_Usersb_users=newMS_Users();求大神帮看下该如何优化stringsql="selectfund_accountfromXX_fundgroupbyfund_account";DataTabledt_fund=newMS.DataBase.SQLServerDAL.SQLUtil().ExecuteDataSetSql(sql,MS.DataBase.SQLServerDAL.SQLUtil.DatabaseType.EKEnterprise).Tables[0];DataTabledt_user;foreach(DataRowdrindt_fund.Rows){dt_user=b_users.GetList("FuturesNum='"+dr["fund_account"]+"'","").Tables[0];if(dt_user.Rows.Count>0){sql="updateXX_fundsetuser_id="+dt_user.Rows[0]["Kid"]+"wherefund_account='"+dr["fund_account"]+"'";newMS.DataBase.SQLServerDAL.SQLUtil().ExecuteSql(sql,MS.DataBase.SQLServerDAL.SQLUtil.DatabaseType.EKEnterprise);}}
解决方案
解决方案二:
如果是两张表关联更新的话,直接用sql语句,update+innerjoin
解决方案三:
引用1楼bdmh的回复:
如果是两张表关联更新的话,直接用sql语句,update+innerjoin
这个更新还是很快的,我试了。但是关于一部分该如何优化,或者提供下其他的思路也好呀,给你10分吧。
解决方案四:
dt_user=b_users.GetList("FuturesNum='"+dr["fund_account"]+"'","").Tables[0];这句明显影响效率,为何不都读出来,然后dt_user.Selct("")呢之前的写法每次循环都读数据库很慢的!sql="updateXX_fundsetuser_id="+dt_user.Rows[0]["Kid"]+"wherefund_account='"+dr["fund_account"]+"'";这句也是,先放在集合,然后用事务一起执行