【技术实现步骤摘要】
一种提高数据库深度分页查询效率的方法与终端
[0001]本专利技术涉及计算机
,特别涉及一种提高数据库深度分页查询效率的方法与终端。
技术介绍
[0002]在一个项目中,对一张数据量超过百万的表进行分页查询时,随着页数的增大,查询速度将会越来越慢,即MySQL的深度分页问题。为了防止数据库一次性加载太多数据导致内存、磁盘IO都开销过大,经常需要分页展示,这个时候就需要用到MySQL的LIMIT关键字。同样是查询10条数据,LIMIT 0,10,LIMIT 10000,10,LIMIT 1000000,10的查询效率完全不一样,例如LIMIT 1000000,10是把前1000010条数据都查询到,再丢弃前1000000条数据,仅返回后10条数据。所以随着偏移量的增加,查询所耗费的时间呈现指数增长趋势,查询效率低下。
技术实现思路
[0003]本专利技术所要解决的技术问题是:提供一种提高数据库深度分页查询效率的方法与终端,提高数据库深度分页查询效率。
[0004]为了解决上述技术问题,本专利技术采用的技术方案为:
[0005]一种提高数据库深度分页查询效率的方法,包括步骤:
[0006]S1、根据预设的业务条件从原始数据表中读取业务数据;
[0007]S2、依次建立分表,根据预设的分表数据阈值将所述业务数据顺序写入多个分表中,得到所述业务条件所对应的所有分表;
[0008]S3、接收业务程序在所述业务条件下的分页查询请求,根据所述分页查询请求中包含的页码以及 ...
【技术保护点】
【技术特征摘要】
1.一种提高数据库深度分页查询效率的方法,其特征在于,包括步骤:S1、根据预设的业务条件从原始数据表中读取业务数据;S2、依次建立分表,根据预设的分表数据阈值将所述业务数据顺序写入多个分表中,得到所述业务条件所对应的所有分表;S3、接收业务程序在所述业务条件下的分页查询请求,根据所述分页查询请求中包含的页码以及页面容量计算目标数据所存储的分表的目标分表号以及数据偏移量;S4、根据所述目标分表号、所述偏移量以及所述页面容量从所述业务条件所对应的所有分表中查询获取所述目标数据,并将目标数据返回至业务程序。2.根据权利要求1所述的一种提高数据库深度分页查询效率的方法,其特征在于,所述步骤S2具体包括步骤:S21、建立分表号为1的分表,向分表号为1的分表写入所述业务数据;S22、持续监听当前所写入的分表的数据量,判断当前所写入的分表的数据量是否达到预设的分表数据阈值,若是则计算分表号并根据分表号继续新建一个分表,向最新建的分表继续写入数据,直至完成所述业务数据的写入,得到所述业务条件所对应的所有分表。3.根据权利要求1所述的一种提高数据库深度分页查询效率的方法,其特征在于,所述分表数据阈值与所述页面容量为倍数关系,且所述分表数据阈值大于所述页面容量,所述步骤S3中所述目标分表号的计算公式为:n={[pagesize*(pageindex
‑
1)]/tablesize}+1;所述数据偏移量的计算公式为:offset={(pageindex
‑
1)
‑
[tablesize/pagesize*(n
‑
1)]}*pagesize=(pageindex
‑
1)*pagesize
‑
tablesize*(n
‑
1);其中,n表示所述目标分表号,pagesize表示所述页面容量,pageindex表示所述页码,tablesize表示所述分表数据阈值,offset表示偏移量。4.根据权利要求3所述的一种提高数据库深度分页查询效率的方法,其特征在于,所述步骤S4具体为:根据所述目标分表号n确定目标数据所在的目标分表,根据所述目标分表的名称tablename、所述偏移量offset以及所述页面容量pagesize建立查询语句:select*from tablename limit offset,pagesize;并通过所述查询语句自所述目标分表中查询到所述目标数据,将所述目标数据返回至业务程序。5.根据权利要求3所述的一种提高数据库深度分页查询效率的方法,其特征在于,所述页面容量为10,所述分表数据阈值为100000。6.一种提高数据库深度分页查询效率的终端,包括处理器、存储器以及存储在...
【专利技术属性】
技术研发人员:刘德建,汪松,叶伟,李佳,
申请(专利权)人:福建天晴数码有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。