★.NET/J2EE/winform 千万数据分页技术讨论

时间:2022-01-27 09:08:40
对于信息管理系统,主要操作对象就是数据库
当数据达到千万或上亿级别时,把数据全部显示在页面上可能唯一的办法就是分批取出了

我采用的办法就是按自增列每次读取10000条,并放在同一个缓存空间里面,当用户浏览的数据在10000条之前,就直接呈现缓存中的数据;当数据在10000条后,用同样的方法,将新数据插入缓存空间覆盖掉旧数据。经过测试,发现这种方法的效率要远远高于网上流传的一些分页技术。

可是之后,我又发现了一些明显的缺陷,比如排序
用这种方法只能对缓存中的10000条数据进行排序,也就是说,会循环出现A-Z的排序情况,这显然不符合用户的使用习惯。

不知道各位是怎样处理大数据的显示问题的,如果有好的方案,请不吝赐教!!

 

9 个解决方案

#1


怎么没有人帮忙啊
难道大家写程序都不考虑数据量的问题
还是不管数据量大小都一概的 SELECT *

#2




     象你说的,谁没事查个几万条数据,一条一条看完再看下个几万条?

     海量级的数据就要重点放在数据库的操作上了。

     分区表,分表,索引,存储过程,视图...这写做好,读取数据是很快的,关键是页面显示会

非常慢,所以还是把常用数据存成静态页面的好.修改某条数据时,只重新生成其所在的页面。


     我原来管理通讯的数据库ORACLE,数据不是很多,2千多万条~~做CRM,查询各种数据

快的很.

#3


有哪些SB需要把千万的数据一页一页的看?

#4


先在后台排好序再取

#5


谢谢大家的讨论

可是我希望大家不要帮我寻求替代方法
而是直接解决问题
我说的是“遍历”所有数据,而不是select其中符合条件的行。

谢谢

#6




     楼主好有意思哦,select 你不加条件不就遍历所有记录了么?

     你的问题不就是分页读取么?

#7


不好意思
我还没有得到我的答案,可能是意思没有说明白

假设我有一张数据表,含有两个字段ID(自动编号)和name(用于存储中文)

我是想按name排序每次从表中取出1W条数据
怎样才能不重复、不遗漏,还能按name排序

谢谢!

#8


自己再顶下先

#9


不好意思
我还没有得到我的答案,可能是意思没有说明白

假设我有一张数据表,含有两个字段ID(自动编号)和name(用于存储中文)

我是想按name排序每次从表中取出1W条数据
怎样才能不重复、不遗漏,还能按name排序

谢谢!

#1


怎么没有人帮忙啊
难道大家写程序都不考虑数据量的问题
还是不管数据量大小都一概的 SELECT *

#2




     象你说的,谁没事查个几万条数据,一条一条看完再看下个几万条?

     海量级的数据就要重点放在数据库的操作上了。

     分区表,分表,索引,存储过程,视图...这写做好,读取数据是很快的,关键是页面显示会

非常慢,所以还是把常用数据存成静态页面的好.修改某条数据时,只重新生成其所在的页面。


     我原来管理通讯的数据库ORACLE,数据不是很多,2千多万条~~做CRM,查询各种数据

快的很.

#3


有哪些SB需要把千万的数据一页一页的看?

#4


先在后台排好序再取

#5


谢谢大家的讨论

可是我希望大家不要帮我寻求替代方法
而是直接解决问题
我说的是“遍历”所有数据,而不是select其中符合条件的行。

谢谢

#6




     楼主好有意思哦,select 你不加条件不就遍历所有记录了么?

     你的问题不就是分页读取么?

#7


不好意思
我还没有得到我的答案,可能是意思没有说明白

假设我有一张数据表,含有两个字段ID(自动编号)和name(用于存储中文)

我是想按name排序每次从表中取出1W条数据
怎样才能不重复、不遗漏,还能按name排序

谢谢!

#8


自己再顶下先

#9


不好意思
我还没有得到我的答案,可能是意思没有说明白

假设我有一张数据表,含有两个字段ID(自动编号)和name(用于存储中文)

我是想按name排序每次从表中取出1W条数据
怎样才能不重复、不遗漏,还能按name排序

谢谢!