一种数据查询方法技术

技术编号:39655834 阅读:14 留言:0更新日期:2023-12-09 11:24
本申请涉及计算机技术领域,提供了一种数据查询方法

【技术实现步骤摘要】
一种数据查询方法、装置、设备及存储介质


[0001]本申请涉及计算机
,提供了一种数据查询方法

装置

设备及存储介质


技术介绍

[0002]偏移量查询是指对数据库通过
SELECT
语句进行查询时使用关键字“OFFSET”来跳过指定数量的记录的查询方式,这种查询方式通常需要遍历普通索引或者记录来跳过指定偏移量的记录以实现偏移量查询,一旦偏移量过大就会为数据库带来大量的无效读写量,导致读盘量多,查询速度慢的问题

[0003]为了解决大偏移量查询的场景下查询速度慢的问题,相关技术中存在以下两种方案:在
Tablekv
中,一般通过分页查询的计数来减少查询的消耗,分页查询是将一次查询分为多次,每次查询记录下当前的结果,下一次查询根据当前的查询结果继续向后查询,从而减少单次查询的性能消耗,提高查询速度

但这种方式在跳页场景下,由于无法根据上一次的查询结果向后查询,因此还是存在需要遍历索引的情况,也即还是存在读盘量多,查询速度慢的问题

[0004]在
MYSQL8.0
中,常用的优化方案是“子查询”,这种方式通过遍历索引来查询到偏移量对应的记录的主键,并且在索引遍历过程中
,
会过滤掉不满足查询条件的记录,从而通过减少回表次数,减少一定的读盘量

但这种方法依旧需要先遍历索引来找到偏移量对应的索引位置,才能查询到主键,因此在偏移量过大时,读盘次数和读盘量依旧较多,仍然存在查询速度慢的问题

[0005]由此可见,在大偏移量查询的场景下,相关技术中仍然存在读盘量多,查询速度慢的问题


技术实现思路

[0006]本申请实施例提供了一种数据查询方法

装置

设备及存储介质,以解决在大偏移量查询的场景下,相关技术中仍然存在读盘量多,查询速度慢的问题

[0007]第一方面,本申请实施例提供了一种数据查询方法,包括:接收用于获取至少一条目标数据记录的第一查询请求;所述第一查询请求至少包括:查询条件

偏移量和查询数量;遍历数据库包含的各第一范围索引,获得所述偏移量命中的目标范围索引;其中,每个第一范围索引对应一个键值,所述键值表征:相应第一范围索引关联的各索引各自对应的数据记录中,满足所述查询条件的数据记录数量;所述目标范围索引表征:在已遍历的至少一个第一范围索引的键值之和首次不小于所述偏移量时,遍历的最后一个第一范围索引;在所述目标范围索引关联的各索引中,获得符合所述偏移量的目标索引,并从所述目标索引的下一个索引开始,获取符合所述查询数量的至少一条目标数据记录

[0008]第二方面,本申请实施例还提供了一种数据查询装置,包括:
接收单元,用于接收用于获取至少一条目标数据记录的第一查询请求;所述第一查询请求至少包括:查询条件

偏移量和查询数量;查询单元,用于执行以下操作:遍历数据库包含的各第一范围索引,获得所述偏移量命中的目标范围索引;其中,每个第一范围索引对应一个键值,所述键值表征:相应第一范围索引关联的各索引各自对应的数据记录中,满足所述查询条件的数据记录数量;所述目标范围索引表征:在已遍历的至少一个第一范围索引的键值之和首次不小于所述偏移量时,遍历的最后一个第一范围索引;在所述目标范围索引关联的各索引中,获得符合所述偏移量的目标索引,并从所述目标索引的下一个索引开始,获取符合所述查询数量的至少一条目标数据记录

[0009]一种可能的实现方式中,所述第一范围索引是索引建立单元通过以下方法建立的:根据数据库中保存的各数据记录各自包含的预设字段的取值,分别针对相应的数据记录建立索引;按照预设区间划分规则,将获得的各个索引划分为
N
个索引区间,并为每个索引区间建立对应的第一范围索引,得到
N
个第一范围索引;
N≥1
;其中,每个所述第一范围索引对应一个键值对,所述一个键值对以所述查询条件和相应索引区间为键,以相应索引区间中包括的满足所述查询条件的数据记录数量为键值

[0010]一种可能的实现方式中,所述预设区间划分规则包括以下至少一种:不同索引区间的区间长度相等;不同索引区间包括的满足所述查询条件的数据记录数量之间的差值,不大于第一阈值;不同索引区间包括的满足所述查询条件的数据记录中,预设关键字的出现次数相等;在每个索引区间包括的满足所述查询条件的各数据记录中,所述预设字段的取值的最大值和最小值之差,为所述数据库包括的全部满足所述查询条件的数据记录中,所述预设字段的取值的最大值和最小值之差的
1/N。
[0011]一种可能的实现方式中,所述查询单元在所述目标范围索引关联的各索引中,获得符合所述偏移量的目标索引时,用于:从所述目标范围索引关联的第一个索引开始,依次遍历所述目标范围索引关联的各索引,直至除所述目标范围索引之外的已遍历的至少一个第一范围索引的键值之和,与所述目标范围索引关联的已遍历的满足所述查询条件的索引数量的和,等于所述偏移量,获得所述目标索引;其中,所述目标索引为已遍历的索引中的最后一个索引

[0012]一种可能的实现方式中,所述接收单元,还用于接收用于添加新增数据记录的写入请求;数据记录写入单元,用于在所述数据库中,写入所述新增数据记录,并根据所述新增数据记录包含的预设字段的取值,建立所述新增数据记录对应的新增索引;索引建立单元,用于在各第一范围索引中存在关联范围索引时,更新所述关联范围索引的键值;所述关联范围索引对应的索引区间包含所述新增索引;在各第一范围索引中不存在所述关联范围索引时,新建一个新增范围索引;所述新增范围索引对应的索引区间以所述新增索引为索引区间的一个端点

[0013]一种可能的实现方式中,所述索引建立单元,还用于响应于针对所述数据库中包含的各第一范围索引触发的重建请求,执行以下范围索引重建操作:按照所述预设区间划分规则,将获得的各索引划分为
M
个索引区间,并为每个索引区间建立对应的第二范围索
引,得到
M
个第二范围索引;
M≥1
;针对在所述范围索引重建操作的执行期间,写入的至少一条新增数据记录,分别执行以下操作:根据一个新增数据记录包含的预设字段的取值,建立所述一个新增数据记录对应的一个新增索引;在各第二范围索引中存在所述关联范围索引时,更新所述关联范围索引的键值;在各第二范围索引中不存在所述关联范围索引时,新建一个新增范围索引

[0014]一种可能的实现方式中,在满足以下重建条件的至少一种时,重建请求触发单元针对所述至少一个第一范围索引触发重建请求:当前时间为预设时间;任意两个第一范围索引各自对应的键值之差大于第二阈值;所述数据库包含的第一范围索引本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种数据查询方法,其特征在于,包括:接收用于获取至少一条目标数据记录的第一查询请求;所述第一查询请求至少包括:查询条件

偏移量和查询数量;遍历数据库包含的各第一范围索引,获得所述偏移量命中的目标范围索引;其中,每个第一范围索引对应一个键值,所述键值表征:相应第一范围索引关联的各索引各自对应的数据记录中,满足所述查询条件的数据记录数量;所述目标范围索引表征:在已遍历的至少一个第一范围索引的键值之和首次不小于所述偏移量时,遍历的最后一个第一范围索引;在所述目标范围索引关联的各索引中,获得符合所述偏移量的目标索引,并从所述目标索引的下一个索引开始,获取符合所述查询数量的至少一条目标数据记录
。2.
根据权利要求1所述的方法,其特征在于,所述第一范围索引是通过以下方法建立的:根据数据库中保存的各数据记录各自包含的预设字段的取值,分别针对相应的数据记录建立索引;按照预设区间划分规则,将获得的各个索引划分为
N
个索引区间,并为每个索引区间建立对应的第一范围索引,得到
N
个第一范围索引;
N≥1
;其中,每个所述第一范围索引对应一个键值对,所述一个键值对以所述查询条件和相应索引区间为键,以相应索引区间中包括的满足所述查询条件的数据记录数量为键值
。3.
根据权利要求2所述的方法,其特征在于,所述预设区间划分规则包括以下至少一种:不同索引区间的区间长度相等;不同索引区间包括的满足所述查询条件的数据记录数量之间的差值,不大于第一阈值;不同索引区间包括的满足所述查询条件的数据记录中,预设关键字的出现次数相等;在每个索引区间包括的满足所述查询条件的各数据记录中,所述预设字段的取值的最大值和最小值之差,为所述数据库包括的全部满足所述查询条件的数据记录中,所述预设字段的取值的最大值和最小值之差的
1/N。4.
根据权利要求1所述的方法,其特征在于,所述在所述目标范围索引关联的各索引中,获得符合所述偏移量的目标索引,包括:从所述目标范围索引关联的第一个索引开始,依次遍历所述目标范围索引关联的各索引,直至除所述目标范围索引之外的已遍历的至少一个第一范围索引的键值之和,与所述目标范围索引关联的已遍历的满足所述查询条件的索引数量的和,等于所述偏移量,获得所述目标索引;其中,所述目标索引为已遍历的索引中的最后一个索引
。5.
根据权利要求2所述的方法,其特征在于,所述方法还包括:接收用于添加新增数据记录的写入请求;在所述数据库中,写入所述新增数据记录,并根据所述新增数据记录包含的预设字段的取值,建立所述新增数据记录对应的新增索引;在各第一范围索引中存在关联范围索引时,更新所述关联范围索引的键值;所述关联范围索引对应的索引区间包含所述新增索引;
在各第一范围索引中不存在所述关联范围索引时,新建一个新增范围索引;所述新增范围索引对应的索引区间以所述新增索引为索引区间的一个端点
。6.
根据权利要求5所述的方法,其特征在于,所述方法还包括:响应于针对所述数据库中包含的各第一范围索引触发的重建请求,执行以下范围索引重建操作:按照所述预设区间划分规则,将获得的各索引划分为
M

【专利技术属性】
技术研发人员:卢作灌李晋全周钰祖文强郑建军
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1