读书人

大量的查询结果怎么办

发布时间: 2013-12-04 17:21:01 作者: rapoo

大量的查询结果怎么处理
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与分页处理

读书人网 >SQL Server

热点推荐