一种提高数据库深度分页查询效率的方法与终端技术

技术编号:33530946 阅读:19 留言:0更新日期:2022-05-19 02:01
本发明专利技术公开了一种提高数据库深度分页查询效率的方法与终端;根据预设的业务条件从原始数据表中读取业务数据;依次建立分表,根据预设的分表数据阈值将所述业务数据顺序写入多个分表中,得到所述业务条件所对应的所有分表;接收业务程序在所述业务条件下的分页查询请求,根据所述分页查询请求中包含的页码以及页面容量计算目标数据所存储的分表的目标分表号以及数据偏移量;根据所述目标分表号、所述偏移量以及所述页面容量从所述业务条件所对应的所有分表中查询获取所述目标数据,并将目标数据返回至业务程序;根据分表信息直接定位到目标数据所在的分表来查询目标数据,在存在大量数据的情况下极大地提高了业务数据的查询效率。查询效率。查询效率。

【技术实现步骤摘要】
一种提高数据库深度分页查询效率的方法与终端


[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、接收业务程序在所述业务条件下的分页查询请求,根据所述分页查询请求中包含的页码以及页面容量计算目标数据所存储的分表的目标分表号以及数据偏移量;
[0009]S4、根据所述目标分表号、所述偏移量以及所述页面容量从所述业务条件所对应的所有分表中查询获取所述目标数据,并将目标数据返回至业务程序。
[0010]为了解决上述技术问题,本专利技术采用的另一种技术方案为:
[0011]一种提高数据库深度分页查询效率的终端,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0012]S1、根据预设的业务条件从原始数据表中读取业务数据;
[0013]S2、依次建立分表,根据预设的分表数据阈值将所述业务数据顺序写入多个分表中,得到所述业务条件所对应的所有分表;
[0014]S3、接收业务程序在所述业务条件下的分页查询请求,根据所述分页查询请求中包含的页码以及页面容量计算目标数据所存储的分表的目标分表号以及数据偏移量;
[0015]S4、根据所述目标分表号、所述偏移量以及所述页面容量从所述业务条件所对应的所有分表中查询获取所述目标数据,并将目标数据返回至业务程序。
[0016]本专利技术的有益效果在于:本专利技术根据特定业务场景下业务查询的业务条件,对原始数据表中的数据进行分表,从而在后续接收到对应的业务查询请求时,能够根据分表信息直接定位到目标数据所在的分表来查询目标数据,在存在大量数据的情况下极大地提高了业务数据的查询效率。
附图说明
[0017]图1为本专利技术的一种提高数据库深度分页查询效率的方法的流程图;
[0018]图2为本专利技术的一种提高数据库深度分页查询效率的终端的结构图;
[0019]标号说明:
[0020]1、一种提高数据库深度分页查询效率的终端;2、处理器;3、存储器。
具体实施方式
[0021]为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。
[0022]请参照图1,一种提高数据库深度分页查询效率的方法,包括步骤:
[0023]S1、根据预设的业务条件从原始数据表中读取业务数据;
[0024]S2、依次建立分表,根据预设的分表数据阈值将所述业务数据顺序写入多个分表中,得到所述业务条件所对应的所有分表;
[0025]S3、接收业务程序在所述业务条件下的分页查询请求,根据所述分页查询请求中包含的页码以及页面容量计算目标数据所存储的分表的目标分表号以及数据偏移量;
[0026]S4、根据所述目标分表号、所述偏移量以及所述页面容量从所述业务条件所对应的所有分表中查询获取所述目标数据,并将目标数据返回至业务程序。
[0027]从上述描述可知,本专利技术的有益效果在于:本专利技术根据特定业务场景下业务查询的业务条件,对原始数据表中的数据进行分表,从而在后续接收到对应的业务查询请求时,能够根据分表信息直接定位到目标数据所在的分表来查询目标数据,在存在大量数据的情况下极大地提高了业务数据的查询效率。
[0028]进一步地,所述步骤S2具体包括步骤:
[0029]S21、建立分表号为1的分表,向分表号为1的分表写入所述业务数据;
[0030]S22、持续监听当前所写入的分表的数据量,判断当前所写入的分表的数据量是否达到预设的分表数据阈值,若是则计算分表号并根据分表号继续新建一个分表,向最新建的分表继续写入数据,直至完成所述业务数据的写入,得到所述业务条件所对应的所有分表。
[0031]由上述描述可知,对分表的数据量进行监听,在数据量达到预设阈值时即新建一分表进行数据写入,保证每张分表的数据量均不超过分表数据阈值,以保障后续步骤的正常执行。
[0032]进一步地,所述分表数据阈值与所述页面容量为倍数关系,且所述分表数据阈值大于所述页面容量,所述步骤S3中所述目标分表号的计算公式为:
[0033]n={[pagesize*(pageindex

1)]/tablesize}+1;
[0034]所述数据偏移量的计算公式为:
[0035]offset={(pageindex

1)

[tablesize/pagesize*(n

1)]}*pagesize
[0036]=(pageindex

1)*pagesize

tablesize*(n

1);
[0037]其中,n表示所述目标分表号,pagesize表示所述页面容量,pageindex表示所述页码,tablesize表示所述分表数据阈值,offset表示偏移量。
[0038]由上述描述可知,根据页码和页面容量,能够精确定位目标数据所在的分表位置,并计算偏移量,从而后续能够精确地从分表中获取目标数据,提高数据获取的效率。
[0039]进一步地,所述步骤S4具体为:
[0040]根据所述目标分表号n确定目标数据所在的目标分表,根据所述目标分表的名称tablename、所述偏移量offset以及所述页面容量pagesize建立查询语句:
[0041]select*from tablename limit offset,pagesize;
[0042]并通过所述查询语句自所述目标分表中查询到所述目标数据,将所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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.一种提高数据库深度分页查询效率的终端,包括处理器、存储器以及存储在...

【专利技术属性】
技术研发人员:刘德建汪松叶伟李佳
申请(专利权)人:福建天晴数码有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1