日期:2014-05-17  浏览次数:20773 次

大量的查询结果怎么处理
1、winform程序的多条sql语句的查询结果怎么累加到一张表中?(所有结果的列都一样)
2、如果得到的查询结果数目很大,怎么处理才能保证内存不满,程序不崩溃?
我想到2的一种解决方案是动态加载,具体怎么实现还是不明白。小女子初学,勿喷。
大数据 结果处理

------解决方案--------------------

1.这个可以这样:

第1个sql语句
union all
第2个sql语句
union all
第3个sql语句
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

1. 可以将查询结果逐个存入Dataset.
2. 如果数目很大,可以分批查询,一般几千条占用也就百兆级空间,对现在的电脑来说不是问题。我的程序载入2500条左右,也就占用了120MB。
 多条sql语句的结果加起来大概有500万条数据,查出来怕客户机内存溢出。 还有办法么?


这个数据量确实太大了,如果一次性加载到c#中,估计会内存溢出把。

对了,这个500w条数据,是最后的结果,还是只是个中间结果,还要进一步处理呢

不处理,就是用户的查询结果,除了增加内存没别的办法了么?


哦,这样啊,但是用户不可能一次浏览500w条数据的,所以你要做分页,比如一次给他100条数据,然后他要看下一页,就在把下面的100条数据查询出来发回给他。

这个是一个分页的sql代码,你可以参考一下:
declare @page_size int;
declare @page_num int;

--比如:每页10条记录
set @page_size = 10;

--比如:先取第1页
set @page_num = 1;

select id,sid,sname
from
(
select c.id,
       c.sid,
       s.sname,
       
       --这里按照@@servername来排序,
       --你可以根据需要按照id,sid,sname等字段来排序
       (row_number() over(order by @@servername) - 1) / @page_size as rownum
from commet c
inner join student s
        on c.sid = s.sid
)t
where rownum = @page_num - 1


------解决方案--------------------
union与分页处理