由于首页的一些栏目不能分页,只能取相应表的前几条最新数据,而我现在使用的dataset,是取相应表中的全部的数据,然后使用dataview.rowfilter过滤,来提取前几条数据,这样使用好象很占服务器资源,是不是?随着网站的访问量不断增加,网站会不会越来越慢?由于这些表中的数据是不断更新的,实时的;那么使用cache来缓存dataset,肯定是不符合要求的,该如何解决这个问题呢?

解决方案 »

  1.   

    用cache来缓存DataSet的确不是好办法,不过你的问题是既然不用那么多数据,为什么都取得出来,然后,让这么一个庞大的DataSet在页面间传递!可以试着只提取你需要的几行!
      

  2.   

    首页无非就是根据某个排序选前几条数据,为什么不在sql语句里处理呢?
    server :select top 10 from table order by col1
    oracle : select * from table order by col1 where ronum=10
      

  3.   

    除了用top,not in 之类在sql语句中筛选外,你还可以参考以下代码.也极提交效率哟.
    public void boundgrid()
    {
    conn=new SqlConnection("Server=.;uid=sa;pwd=sa;database=pubs");
    adapter=new SqlDataAdapter("select * from employee",conn);
    //当前显示内容
    adapter.Fill(dataset,this.startindex,this.DataGrid1.PageSize,"CurDataTable");

    adapter.Fill(dataset,"AllDataTable");
    //定义行数大小
    this.DataGrid1.VirtualItemCount=this.dataset.Tables["AllDataTable"].Rows.Count;
    this.DataGrid1.DataSource=dataset.Tables["CurDataTable"];
    this.DataGrid1.DataBind();

    }
    这是用DataGrid的自定义分页做的,当然前提是在分页时,选中自定义分页
      

  4.   

    服务器在与客户端交互完毕后,最好把数据库给手动关了,再就是把DataSet释放掉;如果DataSet数据不是经常变那么就把DataSet放在cache中;