你的这个循环太占CPU了,又因为数据量实在太大,导致在很短的时间内无法完成,他就会占用100%的CPU,导致机器性能下降

解决方案 »

  1.   

    good good study ,day day up.
      

  2.   

    只选择ID字段呢? 比如:
    MySqlCmd.CommandText = "Select top 100000 ID字段 from news"; 
      

  3.   

    Select top 100000 ID from news
    分页显示数据
      

  4.   

    具体功能实现上 没有问题 就是在大数据量的情况下 循环提取数据的 速度会越来越慢 难道是micorosoft的sqldatareader问题吗?我个人觉得这个问题很难解决了 应为sqldatareader的效率 应该是最高的了! 期待 高手!
      

  5.   


                while (MySqlReader.Read()) 
                { 
                    Application.DoEvents(); 
                    label1.Text=i++.ToString(); 
                } 关键是,在极短的时间内,你还要处理系统信息。这个更要命。你可以改一下你的代码其实你要实现的效果完全可以这样替代while (MySqlReader.Read()) 

        i++;

    label1.Text=i.ToString(); 当然还有更简单的MySqlCmd.CommandText = "Select Count(1) from news"; if (MySqlReader.Read()) 

        label1.Text=MySqlReader[0].ToString();
      

  6.   

    问题的根源在 Application.DoEvents(); 
    随着不断的循环,使用的事件消息越来越多,由于.NET的内存延迟回收机制,内存不能很快被释放,事件消息占用的内存越来越来,最终你觉得好像是数据阅读越来越慢了。你可以注销这句话试试看,效果一定立刻改善。
      

  7.   

    label1.Text=i++.ToString(); 死在这句,本来对控件属性的赋值就比对变量慢得多,你又循环这么多次,而且.text你每赋值一次,界面就得刷一次,能不慢吗?你那个while循环,只是最后显示条数,那就应该如11楼所说
    while (MySqlReader.Read())
    {
        i++;
    }
    label1.Text=i.ToString(); 只更新必要的一次