游客:
注册
|
登录
|
帮助
网友俱乐部
»
数据库操作
»
Oracle教程
» 使用分页查询来适应挖掘海量数据之概论
网友生活网
|
网友学堂
如何获得金币?
诚招斑竹
IP归属地查询 PR查询 收录查询 whois查询
免费超短2级域名,your.jpy.cc
传世私服
|
传奇世界私服
注册亚洲交友中心,找个人来同居吧!
免费存储空间,免费网络硬盘
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: 使用分页查询来适应挖掘海量数据之概论
lonjew
元帅
UID 73191
精华
1
积分 30615
帖子 14941
威望 3
金币 14931
热心 12
阅读权限 100
注册 2008-1-28
状态 离线
#1
使用道具
发表于 2008-4-1 11:22
资料
个人空间
主页
短消息
加为好友
使用分页查询来适应挖掘海量数据之概论
使用分页查询来适应挖掘海量数据之概论
数据挖掘各类算法中,常常需要遍历整个数据库(表)。现实中的数据库可能十分大,往往不可能通过一个简单的Select *的方式遍历提取数据表内的所有元组。直接用Select * 的方式存在两大问题,一是Select *过后,可能要等很久数据库才能将所有信息提交完毕,第二是得到的结果可能是很大,远远超过内存的限制。
现在各种主流的数据库都支持了分页查询的方式。
以
Oracle
为例,通过rownum关键字可以获取指定的行区间。
比如: Select * from XX.TABLE1 where rownum <= 100。不过
Oracle
的rownum有点特别的就是,rownum必须从1开始,如果直接这样写就不行了: Select * from XX.TABLE1 where rownum between 50 and 100。
而实际上,我们可以这样来写:SELECT * from (select n.*,rownum num from XX.TABLE1 n WHERE rownum <=100) where num >= 50;
以MySQL为例,提供了limit关键字,更加方便获取中间某区间的行数据。
比如: Select * from TABLE1 limit 50,100。 MySQL的limit关键字用起来比Oracle要方便一些。不过各个数据库的分页查询的速度我倒没有研究过,网上听一些高手们说,Oracle提供的分页查询效率要高一些。
Hibernate这样的数据持久层提供的分页查询,可以屏蔽掉各个不同的数据库之间具体SQL实现差异。
Hiberante这样的数据持久层工具一大好处就是可以屏蔽掉不同数据库的之间的某些细节差异。分页查询在不同的数据库上实现的SQL不一样,所以要统一,最好使用Hibernate这样的工具。
Query q = session.createQuery("from Cat as c");
q.setFirstResult(50);
q.setMaxResults(100);
List l = q.list();
网上到处都可以搜寻到关于Hibernate内部实现分页查询的解读的文章。可以看到,Hibernate内部也是通过rownum,limit这些关键字来实现分页的
网友
lonjew
签名 - 网友社区
==
[广告]
免费域名(Free Subdomain)
免费空间(Free hosting)
PR查询(Google Pagerank)
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计
当前时区 GMT+8, 现在时间是 2008-10-16 04:20
信产部ICP备案:
京ICP备05066424号
北京市公安局网监备案:1101050648号
Powered by
Discuz!
5.5.0
TOP
清除 Cookies
-
联系我们
-
网友俱乐部
-
Archiver
-
WAP