利用dataset加 dataview加pagedatasource(封装了gridview跟分页相关的属性)
再加aspnetpager分页控件,,再加gridview分页显示数据的时候,要想提高速度,该注意哪些呢?
我现在的做法是(假如需要分页显示一个数据表的数据)
1\利用dataset获得全部数据,
2\通过 dataset获得对应的dataview
3\将dataview绑定到pagedatasource对象
4\设置pagedatasource的页码,
5\绑定到gridview展现数据(对应合适的页码)这个过程,假设数据表有200万条记录,gridview每页显示10万记录,那么这个页面显示将异常缓慢,,
问题1\这中间慢的主要原因来自哪个环节?(不考虑硬件)是dataset获得全部200万记录的过程占用大量时间,还是gridview从dataview读取数据展现到当前页的10万条记录这个过程占大量时间???就是两者所花费时间的比值,哪个占主要?(速度慢的主要原因来自哪里?)问题2\如果每页设置显示10条记录,那么这个时候速度应该会快多少??就是每页从10万记录减少到10条记录,时间能够节省很多吗?问题三\如果dataset仅仅获得当前页所需要的10万记录(而不是所有200万记录),那速度会增加很多吗?问题4\如果每页显示10条记录,并且dataset每次仅仅装载10条记录(这是否是最理想的状态和速度呢?)问题5\这个过程尽可能加快速度还能有其它方法吗???

解决方案 »

  1.   

    分页获取数据
    建立索引
    LINQ SKIP Take
      

  2.   

    用Lucene.net对数据库建立索引及搜索
      

  3.   

     using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["C6ConnectionString"].ConnectionString))
            {
                SqlCommand cmd = new SqlCommand(sql, con);
                SqlDataAdapter datar = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                datar.Fill(ds);
                DataView dv = ds.Tables[0].DefaultView;
                AspNetPager1.RecordCount = dv.Count;
                PagedDataSource pds = new PagedDataSource();
                pds.AllowPaging = true;
                pds.DataSource = dv;
                pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
                pds.PageSize = AspNetPager1.PageSize;
                GridView1.DataSource = pds;
                GridView1.DataBind();
            }就是这样的方式
      

  4.   

    分页和翻页要是快做好用存储过程翻页,所有的条件和判断都在数据内完成不用多次连接数据库,我的网站全部是这样做的你可以看一下 http://www.66shenyang.com/ 沈阳酒店预订
      

  5.   

     GridView 的分页功能
    http://blog.csdn.net/heiwer/archive/2010/12/10/6067981.aspx
      

  6.   

    一次性取出200万条记录,然后分页每页显示10条,这种做法太恐怖了!
    为什么不是每次只取出10条记录,再显示10条记录呢?
    不要用dataview自带的分页方法,效率太低,会害死人的。