工作中往往要对数据进行复杂的处理后,得到一个庞大的记录集.
这个处理是很耗服务器资源的,因次希望查询条件没有改变时,直接从已生成记录集返回指定页,而不是让服务器再生成.现有想法2个1 在查询生成后一次性加载到客户端,查询条件没改变前直接在本地读取.变了再重新查询并加载数据到本地.
  
  如果用这种方法,如何实现最好?把记录集存到本地XML文件,最从XML读取指定记录吗?2 在服务器生成一个临时表,查询条件没改变前从临时表读取,条件改变了再刷新临时表.  在数据库创建临时表,条件不断的改变,多用户不断的删除和创建,对数据库工作会有什么不良影响吗?不知这面2方法是否可行,那种更好,或者都不好,恳请你的指教.

解决方案 »

  1.   

    至于第一个方法,我想先问你做的是bs程序吗?如果是bs,你如何在客户端本地存储xml?这个是不行的。
      

  2.   

    全读取出来存在dateset中,dateset分页
      

  3.   

    我在BS下用的,dateset只是一次性有效,网页加载完后,dateset就失效了.
      

  4.   

    可以用dateset,并使用 数据缓存.这样就不用再次读数据库了. 
      

  5.   

    如果你使用数据源控件,譬如SqlDataSet或ObjectDataSource,你只需
    设置它们的EnableCaching为True即可.你不需要做更多的工作,第一次读取得到的
    DataSet将被缓存.下次需要读DataSet时,就会直接从缓存中读取(如果此缓存在有效期内)当然如果你不用数据源控件,而是手工写代码取数据.那其实也很简单.
    一个简单的示例://在第一次打开页面时,从数据库中读出数据,并写入cache
    Private DataSet getdate()
    {
    DataSet ds=Cache["mydata"] as Dataset;
    if (ds==null)
    {
    ds=selectdata(); //selectdata方法从数据库中读数据并返回dataset
    Cache.Insert("mydata",ds);
    }
    return ds;
    }Private DataSet selectdata()
    {
    //从数据库中查询数据
    }
      

  6.   

    newdigitime(日月明之):
    我用LINQ连接数据库的,返回的类型与DataSet有些区别,方便的话介绍一下LINQ返回类型的缓存,省得我还要花很多时间琢磨.人懒,呵呵.
      

  7.   

    cache与application一样,保存的是一个"对象"集合.
    不一定限定成dataset,上面只是个简单示例.
    你想保存什么类型就根据你的需要了.使用时,转换一下就行了.譬如:
    DataSet ds=Cache["mydata"] as Dataset;
    Dictionary dc=(Dictionary) Cache["mydc"];
      

  8.   

    给你一个参考文章
    http://blog.miniasp.com/post/2008/07/Cache-LINQ-to-SQL-result-by-using-SqlCacheDependency.aspx
      

  9.   

    大量数据缓存就行了
    分页使用skip tack
    字段的延迟加载
    LIQN 缓存