当前位置:编程学习 > C#/ASP.NET >>

asp.net(c#)对处理查询出的大量数据的最佳方案

一个页面有两个按钮,一个查询按钮,查询结果是一个上千行的datatable,一个是对查询出来的数据进行处理的按钮。
请教大家,最佳的实现方案是什么?
是先把查询出来的数据存在session里,然后单击第二个按钮时再对session进行转换吗?

大家认为最好的办法是什么? --------------------编程问答-------------------- 从代码优化上考虑 session是不允许存放数据集之类的,何况你这还是大数据量。你用一viewstate记录下来第一个按钮查询后的条件,然后第二个按钮事件在第一个按钮条件上再做过滤

虽然我不清楚你两个按钮的实现功能机制。如果第一个查询 第二个是做分类统计的话 就用上面的做的到 --------------------编程问答-------------------- 上千行也不是很大啊,session还是可以存储的,个人感觉你为什么不能把两步并一步呢,为什么偏要弄成两个按钮来分步操作呢? --------------------编程问答-------------------- 你页面要显示几千行数据吗,如果不是,不如就查本页面需要显示的多少行数据, --------------------编程问答-------------------- 用缓存来存储吧。 --------------------编程问答-------------------- 最好别用session。session容易丢失 --------------------编程问答-------------------- 一般情况还是显示多少就查询出多少. 这样查询后再使用WebForm控件分页的功能, 会非常占资源 --------------------编程问答-------------------- 一般情况还是显示多少就查询出多少.在同一个页面使用viewstate,不同页面使用session --------------------编程问答-------------------- 不需要分页吗? --------------------编程问答--------------------
用session不好,部署了多台web服务器做负载均衡的时候,session是存服务器内存的,服务器有多台,session状态就会莫名丢失。
可以考虑用cookie缓存数据,不过cookie存单个键有大小限制,只能存储4kb,而且安全性也要考虑到,可能你到后台修改数据前,还要进行一些数据检验。

为什么不分页呢? --------------------编程问答-------------------- gridview??? gridview??? 

gridview自动生成隐藏字段,发往服务器的时候不用重新再读取数据库的数据了。

此外,如果可以用JS处理 --------------------编程问答-------------------- 还是说说你的那个处理是个什么回事? --------------------编程问答-------------------- 显示多少查多少
不显示的数据没必要取出来,只要记录第一部用的sql就可以了,第二部操作根据sql进一步筛选 --------------------编程问答-------------------- 直接用dataset就可以了啊,在页面里声明一个全局变量dataset,dataset来存储数据就行了啊。不知道lz在纠结什么 --------------------编程问答--------------------

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace Demo
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        public DataSet ds = null;//在这里声明一个dataset变量就行了
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}
在页面里就操作这个变量就行了啊,lz在纠结什么呢? --------------------编程问答-------------------- 不要用session,session容易丢失,而且消耗资源比较多!不安全,可以用缓存,或者是用分页可以的! --------------------编程问答-------------------- 用一个变量 保存 就行了。可以用字典,使用起来方便。

上千行,你想在页面上显示 那是 相当多的数据了,容易卡住。


 最好进行分页,两个 按钮都去数据库查,只是查询条件 不一样。 --------------------编程问答-------------------- 一个按钮就可以了吧  根据不同的条件查询  在sql语句里面写分也得算法  每次翻页执行一次页面的提交
把页数索引存储在以藏于里面  不是很好吗 --------------------编程问答-------------------- asp.net与asp的不同?谁能说说啊 --------------------编程问答--------------------
引用 18 楼 scy_xj 的回复:
asp.net与asp的不同?谁能说说啊

就像雷锋和雷锋塔的不同,完全不是一个东西有什么好比较的 --------------------编程问答-------------------- 具体情况具体分析。可以把查询条件带到数据库用存储过程来处理这些数据。 --------------------编程问答--------------------
引用 14 楼 qigemingzihaonana 的回复:
C# code

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace Demo
{
    public partial class WebForm1……


同意啊! --------------------编程问答--------------------
引用 2 楼 myhope88 的回复:
上千行也不是很大啊,session还是可以存储的,个人感觉你为什么不能把两步并一步呢,为什么偏要弄成两个按钮来分步操作呢?

根据需要必须要两个按钮的。
--------------------编程问答--------------------
引用 9 楼 lisliefor 的回复:
用session不好,部署了多台web服务器做负载均衡的时候,session是存服务器内存的,服务器有多台,session状态就会莫名丢失。
可以考虑用cookie缓存数据,不过cookie存单个键有大小限制,只能存储4kb,而且安全性也要考虑到,可能你到后台修改数据前,还要进行一些数据检验。

为什么不分页呢?

实现的有分页,每页显示20笔记录,第二个按钮的功能是对查询出来的所有数据每笔生成一个特殊的编号,然后写入数据库。 --------------------编程问答--------------------
引用 11 楼 chen_ya_ping 的回复:
还是说说你的那个处理是个什么回事?

实现的有分页,每页显示20笔记录,第二个按钮的功能是对查询出来的所有数据每笔生成一个特殊的编号,然后写入数据库。 --------------------编程问答-------------------- 你可以用viewstate,但是viewstate中存放数据过多可能页面就一片空白了(以前碰到过viewstate中存了大概1W条记录后页面打开就一片白了),最好还是分页查询,如果你想降低数据库的消耗的话那么就用master-salver的模式好了 --------------------编程问答-------------------- 看完此贴,我发现在现在IT行业混饭吃的真多。 --------------------编程问答-------------------- --------------------编程问答-------------------- 最好别用session。session容易丢失 --------------------编程问答-------------------- DataSet也不需要啊,要方便直接从数据库中查找。
关键还是设计问题,你要找的字段是否是已经显示在页面上了,如果已经显示了想要性能最优化请使用JS,查找并不修改数据库,并且数据已经在你客户端了,为什么不实用JS呢? --------------------编程问答-------------------- 你的意思很难理解 --------------------编程问答--------------------

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace Demo
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        public DataSet ds = null;//在这里声明一个dataset变量就行了
        public DataTable dt = null;//在这里声明一个dataTable变量就行了
        //以上两种都行,先从数据库取出,再处理,再存,再显示
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
} --------------------编程问答--------------------

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace Demo
{
  public partial class WebForm1 : System.Web.UI.Page
  {
  public DataSet ds = null;//在这里声明一个dataset变量就行了
  public DataTable dt = null;//在这里声明一个dataTable变量就行了
  //以上两种都行,先从数据库取出,再处理,再存,再显示
  protected void Page_Load(object sender, EventArgs e)
  {

  }
  }
}
--------------------编程问答-------------------- 个人观点··分页·· --------------------编程问答-------------------- 支持,就用DATASET可以搞定 --------------------编程问答-------------------- 不至于一次查询出这么多结果在一个页面上显示吧,如果是这样的话,是不是可以重新考虑一下对功能的设计! --------------------编程问答-------------------- 不支持放Session里 数据这么大   估计有上千个用户后 你服务器准吃不消 --------------------编程问答-------------------- 一般情况还是显示多少就查询出多少. 

数据库 建索引  页面使用缓存 --------------------编程问答-------------------- 这还不使用数据集?直接全用dataset就行了。 --------------------编程问答-------------------- 一个dataset就成,现对dataset里面的数据进行处理。  --------------------编程问答-------------------- Session占用内存,会消耗大量系统的资源,不宜,当点击一个按钮触发事件的时候就可以获取数据然后就对数据进行处理啊,为何还要用两个按钮。 --------------------编程问答--------------------    如果数据量比较大的话一,分页还是可以的。 --------------------编程问答-------------------- --------------------编程问答-------------------- 用dataset,然后分页就可以了。 --------------------编程问答-------------------- 说用dataset的,有没有想过dataset是放在哪里的? --------------------编程问答-------------------- 进行怎么处理没有说清楚,就一个按钮你要做什么处理,排序?删除?,如查那样,你一个按扭就完成了,
还有,实际应用中,没有必要一次取出千条数据
用session很不可理解 --------------------编程问答-------------------- 用JS吧,数据先随页面一起生成,后续的操作都用JS操作,这样效率最高。
--------------------编程问答--------------------
引用 32 楼 yuhuangc 的回复:
C# code

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace Demo
{
  public partial class WebForm1 :……
页面一回发不就什么也没了? --------------------编程问答-------------------- 用缓存依赖吧 SqlCacheDependency这个加上Cache缓存吧 --------------------编程问答-------------------- 我感觉最好也是两步并一步,分开查询太麻烦了 --------------------编程问答-------------------- 分页,session,缓存都是不错的选择 --------------------编程问答-------------------- session 不行,ViewState更不行,十分的占用内存,个人认为查出分页显示。 --------------------编程问答--------------------
引用楼主 a604577077 的回复:
一个页面有两个按钮,一个查询按钮,查询结果是一个上千行的datatable,一个是对查询出来的数据进行处理的按钮。
请教大家,最佳的实现方案是什么?
是先把查询出来的数据存在session里,然后单击第二个按钮时再对session进行转换吗?

大家认为最好的办法是什么?
一次完成不是更好么?不需要转换。如果非要转换的话,当前页面还是使用ViewState比较好吧,个人看法。 --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,