asp.net读取大量数据,页面打开速度变慢

mingyue_823 2009-12-08 03:23:47
我在写程序的时候需要读取大量的数据,并且使用了for循环,这样使页面的打开速度变的特别慢,不知道怎么解决了。
string sql_count = "SELECT DISTINCT LEFT(photo.Species_no, 4) AS pic_total, Families.families_name FROM photo INNER JOIN Families ON LEFT(photo.Species_no, 4) = Families.families_no WHERE (CONVERT(varchar(10), photo.addtimes, 120) = CONVERT(varchar(10), GETDATE(), 120)) AND (photo.Species_no NOT LIKE '0000%') AND (photo.Species_no <> '')";
DataTable dt = conn.execQuery(sql_count);
if (dt.Rows.Count > 0)
{
Label1.Text = "今日共上传" + dt.Rows.Count + "科";
Label2.Text = "分别为:<br>    <table>";

string sql_count_shu = "";
DataTable dt_count_shu = new DataTable();
for (int i = 0; i < dt.Rows.Count; i++)
{
Label2.Text += "<tr><td>" + dt.Rows[i]["Families_name"].ToString();
sql_count_shu = "SELECT DISTINCT LEFT(photo.Species_no, 7) AS pic_total, Genera.Genera_name FROM photo INNER JOIN Genera ON LEFT(photo.Species_no, 7) = Genera.Genera_no WHERE (CONVERT(varchar(10), photo.addtimes, 120) = CONVERT(varchar(10), GETDATE(), 120)) AND (photo.Species_no NOT LIKE '0000%') AND (photo.Species_no <> '') and left(Genera.Genera_no,4)='" + dt.Rows[i]["pic_total"].ToString() + "'";
dt_count_shu = conn.execQuery(sql_count_shu);
if (dt_count_shu.Rows.Count > 0)
{

Label2.Text += "(";
for (int j = 0; j < dt_count_shu.Rows.Count; j++)
{
Label2.Text += dt_count_shu.Rows[j]["genera_name"].ToString()+"  ";

string sql_count_ke = "SELECT DISTINCT Species_no, Species_name FROM photo WHERE (CONVERT(varchar(10), addtimes, 120) = CONVERT(varchar(10), GETDATE(), 120)) AND (Species_no NOT LIKE '0000%') AND (Species_no <> '') and left(species_no,7)='" + dt_count_shu.Rows[j]["pic_total"].ToString() + "'";
DataTable dt_count_ke = conn.execQuery(sql_count_ke);

if (dt_count_ke.Rows.Count > 0) {

for (int n = 0; n < dt_count_ke.Rows.Count; n++) {

Label2.Text += dt_count_ke.Rows[n]["species_name"].ToString()+"," ;
}
// Label2.Text+=")";
}

}
Label2.Text += ")</td></tr>";
}

if ((Convert.ToDouble( i )/ 6 ==i/6 ) && (i != 0))
{
Label2.Text += "</tr><tr>";
}
}
Label2.Text += "</table>";

sql_count = "SELECT DISTINCT LEFT(photo.Species_no, 7) AS pic_total, Genera.Genera_name FROM photo INNER JOIN Genera ON LEFT(photo.Species_no, 7) = Genera.Genera_no WHERE (CONVERT(varchar(10), photo.addtimes, 120) = CONVERT(varchar(10), GETDATE(), 120)) AND (photo.Species_no NOT LIKE '0000%') AND (photo.Species_no <> '')";
dt = conn.execQuery(sql_count);
if (dt.Rows.Count > 0)
{
Label1.Text += "(" + dt.Rows.Count + "属,";
}

sql_count = "SELECT DISTINCT Species_no, Species_name FROM photo WHERE (CONVERT(varchar(10), addtimes, 120) = CONVERT(varchar(10), GETDATE(), 120)) AND (Species_no NOT LIKE '0000%') AND (Species_no <> '')";
dt = conn.execQuery(sql_count);

if (dt.Rows.Count > 0)
{
Label1.Text += dt.Rows.Count + "种)";
}
}
else
{
Label1.Text = "今日没有上传的科";
}

这是三分之一的代码。
www.plantphoto.cn/include.aspx
这是变慢的页面。
...全文
374 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
presto1981 2011-10-19
  • 打赏
  • 举报
回复
不是sql语句错误
就是应该分页了
有的时候数据出来多的时候就应该考虑分页
yanfei_519 2009-12-09
  • 打赏
  • 举报
回复
存储过程。分页!
礼拜六 2009-12-08
  • 打赏
  • 举报
回复
分页
lijing3333 2009-12-08
  • 打赏
  • 举报
回复

只能分页吧。。。 如果你有100万数据一次性全取出。 再怎么优化代码 不分页也不行。
你要把2表的字段放页面上....那就直接查2个表 查询2次
jilezhenren 2009-12-08
  • 打赏
  • 举报
回复
写一个分页存储过程
wuyq11 2009-12-08
  • 打赏
  • 举报
回复
优化代码,用存储过程或三层架构,通过实体类实现
lovebot 2009-12-08
  • 打赏
  • 举报
回复
优化你的代码,或者用缓存吧
seawolf114 2009-12-08
  • 打赏
  • 举报
回复
一次读出来的文件多放一段时间,免得下次新开页面又再次去查询。
mingyue_823 2009-12-08
  • 打赏
  • 举报
回复
每个查询语句都是联合两个表,进行的查询,使用的字段只有两个,用的是双重循环。这些数据都需要在一个页面显示出来,所以不能使用分页。大家说的用缓存是什么方式呢?
sarah831208 2009-12-08
  • 打赏
  • 举报
回复
如果是数据相对固定,又是用的比较频繁的数据的话,看能不能使用cache缓存机制 ~
YnSky 2009-12-08
  • 打赏
  • 举报
回复
1.分页一定要写好.用多少数据,就从数据库查询多少数据,不要一次全查询完
2.优化代码.比如用缓存.
3.字段尽量显示少点.可以做个让用户自动选择显示的字段.
phper2008 2009-12-08
  • 打赏
  • 举报
回复
优化存储过程,大量数据简易存储过程分页获取!
takako_mu 2009-12-08
  • 打赏
  • 举报
回复
用Stringbuilder代替lable.Text+=的寫法。
ivws_19 2009-12-08
  • 打赏
  • 举报
回复
在查询分析器里执行一下,看是因为第一句SQL执行的慢,还是因为循环的太多

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧