请问一段代码的优化
请教一段代码的优化
这样子的 ,我sql查询取得了一个datatable。但是有链各个列是数据库里没有的,需要我自己添加
可是执行的非常慢,请帮忙指点下问题出在什么地方了啊!JIJIJI!!!
------解决方案--------------------
你这样每次都要在代码中链接各个列表的效率是极低且极慢的,多用户访问更是如此.
因为.net的缓存机制对数据库的此类操作基本无力,所以速度很慢.
我建议你使用数据库视图,直接在数据库里面建立好视图,然后此处直接访问视图就可以了.
另外建议你多使用下三层架构.
------解决方案--------------------
1.采用存储过程
2.sql语句采用多表连接查询,将数据一次性取出来
------解决方案--------------------
直接用左连接一次查询。你这循环一次查一次,性能太差了。
这样子的 ,我sql查询取得了一个datatable。但是有链各个列是数据库里没有的,需要我自己添加
- C# code
DataTable dt = DBHelper.GetDataTable(sql); //添加列名 DataColumn dc = new DataColumn(); dc.ColumnName = "月用电量"; DataColumn dc2 = new DataColumn(); dc2.ColumnName = "年用电量"; dt.Columns.Add(dc); dt.Columns.Add(dc2); DataTable dt2 = null; DataTable dt3 = null; string times, msql; DateTime timess; for (int m = 0; m < dt.Rows.Count; m++) { times = dt.Rows[m]["Datatime"].ToString(); //记录时间 timess = Convert.ToDateTime(times); msql = "select sum(ElectricityConsumption) as 月用电量 From OF_Node_Report_Elec where NodeID = "+dt.Rows[m]["NodeID"].ToString()+" and Datatime <= '" + times + "' and Datatime >= '" + timess.Year + "/" + timess.Month + "/01'"; dt2 = DBHelper.GetDataTable(msql); dt.Rows[m]["月用电量"] = dt2.Rows[0]["月用电量"]; msql = "select sum(ElectricityConsumption) as 年用电量 From OF_Node_Report_Elec where NodeID = " + dt.Rows[m]["NodeID"].ToString() + " and Datatime <= '" + times + "' and Datatime >= '" + timess.Year + "/01/01'"; dt3 = DBHelper.GetDataTable(msql); dt.Rows[m]["年用电量"] = dt3.Rows[0]["年用电量"]; dt2.Clear(); dt3.Clear(); }
可是执行的非常慢,请帮忙指点下问题出在什么地方了啊!JIJIJI!!!
------解决方案--------------------
你这样每次都要在代码中链接各个列表的效率是极低且极慢的,多用户访问更是如此.
因为.net的缓存机制对数据库的此类操作基本无力,所以速度很慢.
我建议你使用数据库视图,直接在数据库里面建立好视图,然后此处直接访问视图就可以了.
另外建议你多使用下三层架构.
------解决方案--------------------
1.采用存储过程
2.sql语句采用多表连接查询,将数据一次性取出来
------解决方案--------------------
直接用左连接一次查询。你这循环一次查一次,性能太差了。