java分批查询oracle数据库_数据库的分批查询问题

在开发某个要操作数据库的项目时候,我突然想到如何数据库的数据量太大,一般项目设计的时候,会一次读取所有的数据到内存中,这有可能造成内存的溢出,或者系统效率的降低。那么我们如何设计一个开发方案来解决这中问题呢?

百度了一个说法:

在查询的数据量比较大时,我们会采用分批查询的方式来查询数据库。

这是因为数据库会把满足查询条件的所有记录都装载到内存,造成大量资源被占用,严重影响系统运行的效率。

但是,数据库固有的存储过程不支持物理分页,所以如果采用分批查询方式,还需要开发人员编写自己的存储过程来实现。 具体的实现请从网上找,实现方式大致差不多!

这样,服务端每次只把若干条(一般20条)记录返回给客户端,这样,既节省资源,又加快通讯的效率!

但是,发现上面没有给出具体的分批查询设计实现方案。所以希望大家能交流下心得,最后有具体案例的实现方式和方法。

特别是在小型嵌入式设备中,采用的是sqlite数据库,数据量大的话,基本必须采用分批查询,分页查询才行。

搜索的方案

(1)通过sql分页查询语句,利用的表中的某个字段分组分页

select * from users order by id limit 10 offset 0;//offset代表从第几条记录“之后“开始查询,limit表明查询多少条结果

运用:

sqlitecmd.CommandText = string.Format("select * from GuestInfo order by GuestId limit {0} offset {0}*{1}", size, index-1);//size:每页显示条数,index页码

(2)语句性能要优化,避免查询数据的性能

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值