【技术实现步骤摘要】
一种数据查询方法、装置、设备及存储介质
[0001]本申请涉及计算机
,提供了一种数据查询方法
、
装置
、
设备及存储介质
。
技术介绍
[0002]偏移量查询是指对数据库通过
SELECT
语句进行查询时使用关键字“OFFSET”来跳过指定数量的记录的查询方式,这种查询方式通常需要遍历普通索引或者记录来跳过指定偏移量的记录以实现偏移量查询,一旦偏移量过大就会为数据库带来大量的无效读写量,导致读盘量多,查询速度慢的问题
。
[0003]为了解决大偏移量查询的场景下查询速度慢的问题,相关技术中存在以下两种方案:在
Tablekv
中,一般通过分页查询的计数来减少查询的消耗,分页查询是将一次查询分为多次,每次查询记录下当前的结果,下一次查询根据当前的查询结果继续向后查询,从而减少单次查询的性能消耗,提高查询速度
。
但这种方式在跳页场景下,由于无法根据上一次的查询结果向后查询,因此还是存在需要遍历索引的情况,也即还是存在读盘量多,查询速度慢的问题
。
[0004]在
MYSQL8.0
中,常用的优化方案是“子查询”,这种方式通过遍历索引来查询到偏移量对应的记录的主键,并且在索引遍历过程中
,
会过滤掉不满足查询条件的记录,从而通过减少回表次数,减少一定的读盘量
。
但这种方法依旧需要先遍历索引来找到偏移量对应的索引位置,才能查询到主键,因此在偏移量 ...
【技术保护点】
【技术特征摘要】 【专利技术属性】
1.
一种数据查询方法,其特征在于,包括:接收用于获取至少一条目标数据记录的第一查询请求;所述第一查询请求至少包括:查询条件
、
偏移量和查询数量;遍历数据库包含的各第一范围索引,获得所述偏移量命中的目标范围索引;其中,每个第一范围索引对应一个键值,所述键值表征:相应第一范围索引关联的各索引各自对应的数据记录中,满足所述查询条件的数据记录数量;所述目标范围索引表征:在已遍历的至少一个第一范围索引的键值之和首次不小于所述偏移量时,遍历的最后一个第一范围索引;在所述目标范围索引关联的各索引中,获得符合所述偏移量的目标索引,并从所述目标索引的下一个索引开始,获取符合所述查询数量的至少一条目标数据记录
。2.
根据权利要求1所述的方法,其特征在于,所述第一范围索引是通过以下方法建立的:根据数据库中保存的各数据记录各自包含的预设字段的取值,分别针对相应的数据记录建立索引;按照预设区间划分规则,将获得的各个索引划分为
N
个索引区间,并为每个索引区间建立对应的第一范围索引,得到
N
个第一范围索引;
N≥1
;其中,每个所述第一范围索引对应一个键值对,所述一个键值对以所述查询条件和相应索引区间为键,以相应索引区间中包括的满足所述查询条件的数据记录数量为键值
。3.
根据权利要求2所述的方法,其特征在于,所述预设区间划分规则包括以下至少一种:不同索引区间的区间长度相等;不同索引区间包括的满足所述查询条件的数据记录数量之间的差值,不大于第一阈值;不同索引区间包括的满足所述查询条件的数据记录中,预设关键字的出现次数相等;在每个索引区间包括的满足所述查询条件的各数据记录中,所述预设字段的取值的最大值和最小值之差,为所述数据库包括的全部满足所述查询条件的数据记录中,所述预设字段的取值的最大值和最小值之差的
1/N。4.
根据权利要求1所述的方法,其特征在于,所述在所述目标范围索引关联的各索引中,获得符合所述偏移量的目标索引,包括:从所述目标范围索引关联的第一个索引开始,依次遍历所述目标范围索引关联的各索引,直至除所述目标范围索引之外的已遍历的至少一个第一范围索引的键值之和,与所述目标范围索引关联的已遍历的满足所述查询条件的索引数量的和,等于所述偏移量,获得所述目标索引;其中,所述目标索引为已遍历的索引中的最后一个索引
。5.
根据权利要求2所述的方法,其特征在于,所述方法还包括:接收用于添加新增数据记录的写入请求;在所述数据库中,写入所述新增数据记录,并根据所述新增数据记录包含的预设字段的取值,建立所述新增数据记录对应的新增索引;在各第一范围索引中存在关联范围索引时,更新所述关联范围索引的键值;所述关联范围索引对应的索引区间包含所述新增索引;
在各第一范围索引中不存在所述关联范围索引时,新建一个新增范围索引;所述新增范围索引对应的索引区间以所述新增索引为索引区间的一个端点
。6.
根据权利要求5所述的方法,其特征在于,所述方法还包括:响应于针对所述数据库中包含的各第一范围索引触发的重建请求,执行以下范围索引重建操作:按照所述预设区间划分规则,将获得的各索引划分为
M
技术研发人员:卢作灌,李晋全,周钰,祖文强,郑建军,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。