在开发某个要操作数据库的项目时候,我突然想到如何数据库的数据量太大,一般项目设计的时候,会一次读取所有的数据到内存中,这有可能造成内存的溢出,或者系统效率的降低。那么我们如何设计一个开发方案来解决这中问题呢?
百度了一个说法:
在查询的数据量比较大时,我们会采用分批查询的方式来查询数据库。
这是因为数据库会把满足查询条件的所有记录都装载到内存,造成大量资源被占用,严重影响系统运行的效率。
但是,数据库固有的存储过程不支持物理分页,所以如果采用分批查询方式,还需要开发人员编写自己的存储过程来实现。 具体的实现请从网上找,实现方式大致差不多!
这样,服务端每次只把若干条(一般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)语句性能要优化,避免查询数据的性能