多表分页查询方法、装置、设备及存储介质

文档序号:7576 发布日期:2021-09-17 浏览:40次 英文

多表分页查询方法、装置、设备及存储介质

技术领域

本公开属于数据库

技术领域

,具体涉及一种多表分页查询方法、装置、设备及存储介质。

背景技术

随着互联网业务逐渐扩大,数据量剧增,单表存储已无法满足业务需求,需要将一个数据表拆分为多个数据表表。例如,可以将一个订单表按照月份拆分为多个数据表。

通常,若需要多表分页查询,首先,业务服务端计算每个分表的记录总数;然后,业务服务端再根据客户端发送的请求参数,计算出哪些分表中存在请求的记录;最后,业务服务端从这些分表中查询出数据返回给客户端。

然而,上述的多表分页查询方式,服务端计算逻辑繁琐,客户端的单次查询请求,可能需要服务端分别对多个表进行查询,服务端需要分别计算每个表的偏移量,数据库也需要接受每个表的分页查询,如此导致分页查询性能较差。

发明内容

本公开实施例的目的是提供一种多表分页查询方法、装置、设备及存储介质,能够解决分页查询性能较差的问题。

为了解决上述技术问题,本公开是这样实现的:

第一方面,本公开实施例提供了一种多表分页查询方法,应用于客户端,该方法包括:若接收第一输入,向服务端发送第一查询请求;第一查询请求包括第一查询参数,第一查询参数中分表参数的值为第一分表参数值、查询页的值为第一页值,以及每页数据量为目标数据量;第一分表参数值对应多个数据表中的第一数据表,该多个数据表为根据分表参数的值拆分的数据表;接收并解析服务端发送的第一查询结果,基于第一查询结果更新查询参数为第二查询参数;第一查询结果为服务端对第一数据表进行分页查询得到的查询结果;若接收第二输入,则向服务端发送第二查询请求,以使得服务端根据第二查询参数查询目标数据表;第二查询请求包括第二查询参数,目标数据表为上述多个数据表中的一个数据表。

第二方面,本公开实施例提供了一种多表分页查询装置,该多表分页查询装置包括:发送模块、接收模块、解析模块和更新模块;发送模块,用于若接收第一输入,发送第一查询请求;第一查询请求包括第一查询参数;第一查询参数中分表参数的值为第一分表参数值、查询页的值为第一页值,以及每页数据量为目标数据量;第一分表参数值对应多个数据表中的第一数据表,该多个数据表为根据分表参数的值拆分的数据表;接收模块,用于接收服务端发送的第一查询结果;第一查询结果为服务端对第一数据表进行分页查询得到的查询结果;解析模块,用于解析接收模块接收的第一查询结果;更新模块,用于基于解析模块解析的第一查询结果更新查询参数为第二查询参数;发送模块,还用于若接收第二输入,则向服务端发送第二查询请求,以使得服务端根据第二查询参数查询目标数据表;第二查询请求包括第二查询参数,目标数据表为上述多个数据表中的一个数据表。

第三方面,本公开实施例提供了一种客户端,该客户端包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。

在本公开实施例中,首先,若接收到第一输入,客户端向服务端发送第一查询请求;第一查询请求包括第一查询参数。第一查询参数中分表参数的值为第一分表参数值、查询页为的值为第一页值,以及每页数据量为目标数据量。其次,客户端接收并解析服务端发送的第一查询结构,然后根据第一查询结果更新查询参数为第二查询参数。若接收第二输入,则客户端向服务端发送第二查询请求,以使得服务端根据第二查询参数查询目标数据表。由于第一查询参数中包括分表参数的值、查询页的值和每页的数据量,而第一分表参数值对应多个数据表中的第一数据表,可以使得服务端根据查询参数中的第一分表参数值先查找根据分表参数的值拆分的数据表中的第一数据表,然后再根据查询页的值和每页的数据量对第一数据表进行分页查询。并且第一查询结果为服务端对第一数据表进行分页查询得到的结果;客户端根据的是上一次的查询结果,更新下一次的查询参数,以使得服务端每次仅对一个数据表进行分页查询,即通过改进客户端的查询参数,根据分表参数将原先的多表分页查询降维为单表分页查询,降低了查询系统的复杂性,提高了服务端的性能,可以支持更高的并发查询量。

第四方面,本公开实施例提供了一种表分页查询方法,应用于服务端,方法包括:接收客户端发送的第一查询请求,第一查询请求包括第一查询参数,第一查询参数中分表参数的值为第一分表参数值、查询页的值为第一页值,以及每页数据量为目标数据量;第一分表参数值对应多个数据表中的第一数据表,该多个数据表为根据分表参数的值拆分的数据表;根据第一分表参数值,获取第一数据表;根据第一页值和目标数据量,对第一数据表进行分页查询,得到第一数据表的第一查询结果,并向客户端发送第一查询结果;在接收客户端发送的第二查询请求的情况下,根据第二查询参数,分页查询目标数据表,第二查询请求包括第二查询参数,第二查询参数为客户端根据第一查询结果更新的查询参数,目标数据表为上述多个数据表中的一个数据表。

第五方面,本公开实施例提供了一种多表分页查询装置,该多表分页查询装置包括:接收模块、获取模块、查询模块和发送模块;接收模块,用于接收客户端发送的第一查询请求,第一查询请求包括第一查询参数,第一查询参数中分表参数的值为第一分表参数值、查询页的值为第一页值,以及每页数据量为目标数据量;第一分表参数值对应多个数据表中的第一数据表,该多个数据表为根据分表参数的值拆分的数据表;获取模块,用于根据第一分表参数值,获取第一数据表;查询模块,用于根据第一页值和目标数据量,对第一数据表进行分页查询,得到第一数据表的第一查询结果;发送模块,用于向客户端发送第一查询结果;查询模块,还用于在接收客户端发送的第二查询请求的情况下,根据第二查询参数,分页查询目标数据表,第二查询请求包括第二查询参数,第二查询参数为客户端根据第一查询结果更新的查询参数,目标数据表为上述多个数据表中的一个数据表。

第六方面,本公开实施例提供了一种服务端,该服务端包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第四方面所述的方法的步骤。

在本公开实施例中,首先,服务端接收客户端发送的第一查询请求,第一查询请求包括第一查询参数,第一查询参数中分表参数的值为第一分表参数值、查询页的值为第一页值,以及每页数据量为目标数据量。然后,服务端可以从根据分表参数的值拆分的多个数据表中,获取第一分表参数值对应的第一数据表;之后,服务端可以根据第一查询参数中的第一页值和目标数据量,对第一数据表进行分页查询,得到第一数据表的第一查询结果,并向客户端发送第一查询结果;在接收客户端发送的第二查询请求的情况下,服务端根据第二查询参数分页查询目标数据表。由于查询参数中包括了第一分表参数值,服务端可以直接根据分表参数值确定对应的数据表,在一次查询过程中,仅对分表参数值对应的数据表进行分页查询,不再需要跨表进行查询,简化了服务端的实现逻辑,减少数据表的访问次数,降低了查询系统的复杂性,提高了服务端和数据库的性能,为支持更高的并发查询量提供基础。

第七方面,本公开实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面或第四方面所述的方法的步骤。

第八方面,本公开实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面或第四所述的方法。

附图说明

图1为本公开实施例提供的一种多表分页查询系统的架构示意图;

图2为本公开实施例提供的多表分页查询方法的流程示意图之一;

图3为本公开实施例提供的多表分页查询方法的流程示意图之二;

图4为本公开实施例提供的一种多表分页查询方法的交互流程示意图;

图5为本公开实施例提供的多表分页查询装置可能的结构示意图之一;

图6为本公开实施例提供的多表分页查询装置可能的结构示意图之一;

图7为本公开实施例提供的客户端可能的结构示意图之二;

图8为本公开实施例提供的服务端可能的结构示意图之二;

图9为本公开实施例提供的一种客户端的硬件示意图;

图10为本公开实施例提供的一种服务端的硬件示意图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

本公开的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。

下面结合附图,通过具体的实施例及其应用场景对本公开实施例提供的多表分页查询方法进行详细地说明。

图1为本公开实施例提供的一种多表分页查询系统的架构示意图,如图1中所示,该多表分页查询系统包括客户端101和服务端102。其中,客户端101用于接收用户的查询输入,根据用户的查询输入初始化查询参数或更新查询参数,并向服务端102发送查询参数。服务端102根据客户端101发送的查询参数先获取分表参数值对应的一个数据表,然后根据查询页的值和目标数据量对该数据表进行分页查询。

图2为本公开实施例提供的一种多表分页查询方法的流程示意图,如图2中所示,该方法包括下述的S201至S203:

S201、若接收第一输入,客户端向服务端发送第一查询请求。

其中,第一查询请求包括第一查询参数。第一查询参数中分表参数的值为第一分表参数值、查询页的值为第一页值,以及每页数据量为目标数据量。第一分表参数值对应多个数据表中的第一数据表,该多个数据表为按分表参数值拆分的数据表。每页数据量可以为每页显示的数据的条数。

示例性地,分表参数可以为:日、周、月、季度或年。

例如,对于一个订单表,可以按照月份存储订单,则一年的订单可以分别存储在12个月份对于的12个数据表中。

示例性的,分表参数可以为用户ID的最后一位数值。

例如,可以采用用户ID中最后一位的数值分别存储用户相关的数据,则可分别存储在10个数据表中(最后一位为0-9,分别对应一个数据表)。

示例性地,分表参数可以为对用户ID的字符串进行哈希运算并取模运算得到的数值。

例如,可以对用户ID的字符串先进行哈希运算得到哈希值,然后该哈希值对32取模,可以得到0至31中的任意一个数,可以根据得到的0至31将用户的数据分别存储于32个数据表中。

示例性地,第一输入为用户触发客户端获取数据的输入。

示例性地,在客户端接收用户的查询输入之后,客户端可以初始化查询参数。即,若客户端接收第一输入,则客户端可以初始化查询参数为第一查询参数。

需要说明的是,在本公开实施例中,初始化的查询参数中的分表参数可以为默认的,也可以为用户根据需要从多个分表参数中选择的,本公开实施例对此不作具体限定。

需要说明的是,在初始化分表参数值时,客户端可以请求服务端返回分表参数值的参数范围。

其中,第一分表参数值可以默认为分表参数值中的最大值,也可以默认为分表参数值中的最小值,也可以根据用户选择的一个起始值,本公开实施例对此不作具体限定。

可选地,目标数据量的值可以为业务中默认的值,也可以为根据用户手动设置的值,本公开实施例对此不作具体限定。

示例性地,一个页面中一次可以加载20条数据,一次也可以加载10条数据。

S202、客户端接收并解析服务端发送的第一查询结果,根据第一查询结果更新查询参数为第二查询参数。

其中,第一查询结果为服务端对第一数据表进行分页查询得到的查询结果。

可以理解的是,客户端可以根据第一查询结果,更新查询参数中的分表参数的值和查询页的值中的至少一项。

可以理解,第一查询参数中的第一分表参数值可以指示服务端查询第一数据表中的数据。

需要说明的是,客户端在接收到服务端返回的第一查询结果之后,更新查询参数,以使得下一次查询可以基于更新后的查询参数请求服务端进行查询。

S203、若接收第二输入,则客户端向服务端发送第二查询请求,以使得服务端根据第二查询参数查询目标数据表。

其中,第二查询请求包括第二查询参数,目标数据表为上述多个数据表中的一个数据表。

需要说明的是,第二输入可以为用户触发客户端继续加载数据的输入,例如第二输入为用户在界面上下拉刷新页面的输入。

在本公开实施例中,目标数据表可以为第一数据表,也可以为与第一数据表相邻的数据表。

可以理解,客户端在检测到用户的第二输入之后,可以根据之前更新的第二查询参数请求服务端查询数据库中的数据。

示例性地,以分表参数为月份为例,查询参数中携带月份信息,可以使得服务端查询逻辑简化为单表内的分页查询。客户端只需要在初始化时请求获取可查询的范围,通过查询结果动态调整查询参数,逐次向服务端发起请求加载新的分页数据,服务端在分页查询时顺序遍历每个月份对应的数据表,从而实现按时间分表的数据分页查询。

本公开实施例提供的一种多表分页查询方法,首先,若接收到第一输入,则客户端向服务端发送第一查询请求;第一查询请求包括第一查询参数。第一查询参数中分表参数的值为第一分表参数值、查询页为的值为第一页值,以及每页数据量为目标数据量。其次,客户端接收并解析服务端发送的第一查询结构,然后根据第一查询结果更新查询参数为第二查询参数。若接收第二输入,则客户端向服务端发送第二查询请求,以使得服务端根据第二查询参数查询目标数据表。由于第一查询参数中包括分表参数的值、查询页的值和每页的数据量,而第一分表参数值对应多个数据表中的第一数据表,可以使得服务端根据查询参数中的第一分表参数值先查找根据分表参数的值拆分的数据表中的第一数据表,然后再根据查询页的值和每页的数据量对第一数据表进行分页查询。并且第一查询结果为服务端对第一数据表进行分页查询得到的结果;客户端根据的是上一次的查询结果,更新下一次的查询参数,以使得服务端每次仅对一个数据表进行分页查询,即通过改进客户端的查询参数,根据分表参数将原先的多表分页查询降维为单表分页查询,降低了查询系统的复杂性,提高了服务端的性能,可以支持更高的并发查询量。

可选地,在本公开实施例提供的多表分页查询方法中,上述的S202具体可以通过下述的S202a执行:

S202a、客户端接收并解析服务端发送的第一数据表的第一查询结果,基于目标数据量和第一查询结果中的数据量,更新查询参数为第二查询参数。

需要说明的是,第一查询结果中的数据量可以等于目标数据量,也可以小于目标数据量,第一查询结果中的数据量的具体值与第一数据表中存储的数据量相关。

示例性地,客户端可以基于目标数据量和第一查询结果中的数据量的差值,更新查询参数为第二查询参数。客户端也可以基于目标数据量和第一查询结果中的数据量的比值,更新查询查询参数为第二查询参数。

基于该方案,客户端可以基于目标数据量和查询结果中的数据量,更新查询参数,以使得客户端在下一次查询时采用更新后的查询参数请求服务端查询。

可选地,在本公开实施例提供的多表分页查询方法中,上述的S202a中,“基于目标数据量和第一查询结果中的数据量,更新查询参数为第二查询参数”具体可以通过下述的方式1或方式2执行:

方式1-1:

若第一查询结果中的数据数量等于目标数据量,则更新查询页值为第二页值。

其中,第二页值为第一页值加1,第二查询请求用于请求返回第一数据表的第二查询结果。

示例性地,假设第一查询参数中的查询页值预置为1,若则更新的查询参数中的查询页值为2,即请求继续返回第一数据表中的数据。

可以理解,若第一查询结果中的数据量等于目标数据量,则表示第一数据表的数据可能还未返回完。

需要说明的是,若第二次返回的查询结果中的数据量还等于目标数据量,则继续更新查询参数中的查询页值,直至返回的查询结果中的数据量小于目标数据量是不再更新查询页值。

基于该方案,客户端可以根据服务端的返回结果中的数据量,预估请求的数据表中的数据是否全部返回到客户端,在查询结果中的数据量等于目标数据量的情况下,第一数据表中可能还存在数据未返回给客户端,因此客户端可以预先更新好查询参数中的查询页值为第二页值,以使得服务端可以根据第二页值继续返回第一数据表中的数据。无需服务端进行计算每个分表的记录总数,简化服务端的查询逻辑,缩短服务端返回数据的返回时间。

方式1-2:

若第一查询结果中的数据数量小于目标数据量,则更新分表参数值为第二分表参数值,重置查询页的数值为第一页值。

其中,第二分表参数值为与第一分表参数值相邻的分表参数值,第二分表参数值对应上述多个分表中的第二分表,第二查询请求用于请求返回第二分表的查询结果。

可以理解,若第一数据量小于目标数据量,则表示第一数据表的数据已经全部返回给客户端。

需要说明的是,一个查询结果中的数据量可以等于0,即未返回数据,指示该查询结果对应的数据表中的数据已经全部返回给客户端,则客户端可以依据上述的方式更新查询参数,并重新发送查询请求,请求查询下一个数据表中的数据。

基于该方案,客户端可以根据返回的查询结果中的数据量,预估请求的数据表中的数据是否全部返回到客户端,在查询结果中的数据量小于目标数据量的情况下,客户端可以确定当前请求的数据表中的数据已经全部返回,则客户端重新确定分表参数的值,以使得服务端可以直接根据客户端确定的第二分表参数值确定返回数据的第二数据表,不再需要服务端进行逻辑运算确定反馈数据的数据表。

可选地,在本公开实施例提供的分表分页查询方法中,还可以包括下述的S204:

S204、若更新后的分表参数值小于最小分表参数值,或大于最大分表参数值,在客户端接收到查询输入之后,客户端输出提示信息。

其中,提示信息指示查询终止。

需要说明的是,在该方案中,客户端不再向服务端发送查询请求。

需要说明的是,客户端初始化的查询参数中,分表参数值可以从小到大取值,也可以从大到小取值。

示例性地,假设按月分表,在初始化的查询参数中第一分表参数值为最大月的情况下,若更新后的分表参数值小于最小月,则客户端返回提示信息;在初始化的查询参数中第一分表参数值为最小月的情况下,若更新后的分表参数值大于最大月,则客户端返回提示信息。

基于该方案,在多表分页查询过程中,若客户端根据查询结果更新后的分表参数值小于最小分表参数值,或者大于最大分表参数值,客户端可以确定服务端已经没有数据可以返回给客户端,查询可以终止,在客户端接收到用户的查询输入之后,客户端可以输出提示信息,提示用户查询终止,没有更多的数据了。

图3为本公开实施例提供一种多页分表查询方法的流程示意图,如图3中所示,该方法可以包括下述的S301至S304:

S301、服务端接收客户端发送的第一查询请求。

其中,第一查询请求包括第一查询参数。第一查询参数中分表参数值为第一分表参数值、查询页的值为第一页值、以及每页数据量为目标数据量。第一分表参数值对应多个数据表中的第一数据表,该多个数据表为根据分表参数的值拆分的数据表。

示例性地,分表参数为日、周、月、季度或年。

示例性地,分表参数为用户标识的最后一位数值。

示例性地,分表参数为对用户标识的字符串进行哈希运算并取模运算得到的数值。

S302、服务端根据第一分表参数值,获取第一数据表。

具体地,服务端根据第一分表参数值,从多个数据表中查找与第一分表参数值对应的第一数据表。

S303、服务端根据第一页值和目标数据量,对第一数据表进行分页查询,得到第一数据表的第一查询结果,并向客户端发送第一查询结果。

S304、服务端在接收到客户端发送的第二查询请求的情况下,根据第二查询参数,分页查询目标数据表。

其中,第二查询请求包括第二查询参数。第二查询参数为客户端根据第一查询结果更新的查询参数,目标数据表为上述多个数据表中的一个数据表。

本公开实施例提供的一种多表分页查询方法,首先,服务端接收客户端发送的第一查询请求,第一查询请求包括第一查询参数,第一查询参数中分表参数的值为第一分表参数值、查询页的值为第一页值,以及每页数据量为目标数据量。然后,服务端可以从根据分表参数的值拆分的多个数据表中,获取第一分表参数值对应的第一数据表;之后,服务端可以根据第一查询参数中的第一页值和目标数据量,对第一数据表进行分页查询,得到第一数据表的第一查询结果,并向客户端发送第一查询结果;在接收客户端发送的第二查询请求的情况下,服务端根据第二查询参数分页查询目标数据表。由于查询参数中包括了第一分表参数值,服务端可以直接根据分表参数值确定对应的数据表,在一次查询过程中,仅对分表参数值对应的数据表进行分页查询,不再需要跨表进行查询,简化了服务端的实现逻辑,减少数据表的访问次数,降低了查询系统的复杂性,提高了服务端和数据库的性能,为支持更高的并发查询量提供基础。

可选地,在本公开实施例提供的多表分页查询的方法中,上述S304中的“根据更新后的查询参数,分页查询目标数据表”具体可以通过下述的方式2-1或方式2-2执行:

方式2-1:若第二查询参数中分表参数值为一分表参数值、查询页数值为第二页值,以及每页数据量为目标数据量,则服务端根据目标数据量,获取第一数据表的第二查询结果。

其中,第一查询结果中的数据量等于目标数据量。

例如,假设查询请求中请求每次返回10个数据,若第一数据表中包括15个数据,则第一次返回给客户端10个数据,剩余5个数据,第二次返回给客户端剩余的5个数据。

基于该方案,服务端不需要计算表格中数据的偏移量,直接可以根据客户端发送的查询参数中查询页的值确定本次返回数据表中的哪些数据,简化了服务端的实现逻辑,可以为服务端支持更高并发查询量提供基础。

方式2-2:若第二查询参数中分表参数值为第二分表参数值、查询页的值为第一页值,以及每页的数据量为目标数据量,则服务端根据第二分表参数值,对该多个数据表中的第二数据表进行分页查询。

其中,第一查询结果中的数据量小于目标数据量,第二分表参数值对应第二数据表。

结合上述示例,服务端在第二次向客户端发送查询结果之后,第一数据表中剩余的5个数据已经全部返回给客户端,客户端根据返回结果确定第一数据表中数据已经返回完毕,客户端根据查询结果确定出下一次查询的分表参数值为第二分表参数值,并发送个服务端,以使得服务端直接根据查询参数对第二分表参数值指示的第二数据表进行分表查询。

基于该方案,服务端不再需要计算每个分表的数据量,计算请求的数据记录在哪些数据表中,直接根据查询参数确定本次查询的一个数据表,并对该数据表进行分页查询,简化了服务端的查询逻辑,提高了服务端和数据库的性能。

图4为本公开实施例提供的一种多表分页查询方法的交互流程示意图。如图4中所示,包括下述的S401至S407:

S401、若接收第一输入,客户端向服务端发送第一查询请求。

S402、服务端接收客户端发送的第一查询请求。

S403、服务端根据第一分表参数值,获取第一数据表。

S404、服务端根据第一页值和目标数据量,对第一数据表进行分页查询,得到第一数据表的第一查询结果,并向客户端发送第一查询结果。

S405、客户端接收并解析服务端发送的第一查询结果,根据第一查询结果更新查询参数为第二查询参数

S406、若接收第二输入,则客户端向服务端发送第二查询请求,以使得服务端根据第二查询参数查询目标数据表。

S407、服务端在接收到客户端发送的第二查询请求的情况下,根据第二查询参数,分页查询目标数据表。

需要说明的是,客户端的其他步骤可参考上述客户端实施例部分的描述,此处不再赘述。同样的,服务端的其他步骤可参考上述服务端实施例部分的描述,此处不再赘述。

为例便于理解本公开实施例的多表分页查询方法,下面结合具体的示例对传统分页查询和本公开实施例的多表分页查询分别进行说明。

示例:

订单表按照月份拆分数据表,假设目前包括2021年4个月份的订单表,分别为order_202101、order_202102、order_202103和order_202104。该四个表中的订单记录总数分表为:5、4、4、11。订单的唯一标识为数据表中的order_id字段,用于标识一条订单记录。该四个数据表分别如下所示。

表1

order_202101 A1 A2 A3 A4 A5

表2

order_202102 B1 B2 B3 B4

表3

order_202103 C1 C2 C3 C4

表4

order_202101 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11

假设当前的时间月份为202104,客户端需要查询的订单记录,使用分页查询,每页加载10条。

传统分表查询方式的查询步骤:

客户端向服务端发送如下的查询参数。

{

page:1

size:10

}

在接收到第一次查询请求时,服务端先查询当前月对应的表order_202104的数据总数为11,总数大于10条(每页加载条数),返回[D11、D10、D9、D8、D7、D6、D6、D5、D4、D3、D2]作为第1页的查询结果。

在接收到第二次查询请求时,服务端先查询当前月对应的表order_202104的数据总数为11,跳过前10条,取出表order_202104剩余的1条记录D1;再往前查上一个月对应的表order_202103的数据总数为4,取出所有的数据C4、C3、C2、C1;再往前查上一个月对应的表order_202102的数据总数为4,取出所有的数据B4、B3、B2、B1;再往前查上一个月对应的表order_202101的数据总数为5,取出数据A5;向客户端返回[D1、C4、C3、C2、C1、B4、B3、B2、B1、A5]作为第2页的查询结果。

在接收到第三次请求时,服务端采用上述的方式重新从第一个表开始计算,对前3个数据均需要计算偏移量直到计算到最后一个表order_202101的数据总数为5,跳过前1条,取出剩余的4条数据A4、A3、A2、A1;向客户端返回[A4、A3、A2、A1]作为第3页的查询结果。

可以理解,传统的分表分页查询方式,在查询第2页数据时,跨越了4个数据表,服务端的实现逻辑复杂。在查询第3页数据时,对每个数据表的偏移都进行了计算。

本公开实施例提供的多表分页的查询方法的步骤:

在接收到用户在客户端中的查询输入的情况下,客户端可以先向服务端请求可查询数据表的范围。记最大月为month_max,最小月为month_min。客户端初始化查询参数为:month=202104,page=1,size=10。

客户端向服务端发送如下查询参数。

{

month:202104

page:1

size:10

}

在接收到客户端发送的查询参数的情况下,服务端对month=202104对应的数据表order_202104进行分页查询,服务端向客户端发送包括[D11、D10、D9、D8、D7、D6、D6、D5、D4、D3、D2]的查询结果1。

客户端根据查询结果1中的数据的数量等于10条,修改查询页数page=2。

在接收到用户在客户端中第一次下拉刷新输入的情况下,确定需要加载新数据,则客户端向服务端发送更新后的查询参数:month=202104,page=2,size=10。

服务端继续在数据表order_202104内分页查询,并向客户端发送包括[D1]的查询结果2。

客户端根据查询结果2中的数据的数量小于10条,修改month=202103、重置page=1。

在接收到用户在客户端中第二次下拉刷新输入的情况下,客户端确定需要加载新数据,则客户端向服务端发送更新后查询参数为:month=202103,page=1,size=10。

服务端根据month=202103,page=1,在数据表order_202103内分页查询,服务端向客户端发送包括[C6、C5、C4、C3、C2、C1]的查询结果3。

客户端根据查询结果3中的数据的数量小于10条,修改month=202102、重置page=1。

继续下拉则同理,直到修改的month=202012小于month_min,在客户端再次接收到用户在客户端中下拉刷新输入,客户端不再向服务端发送查询请求,显示“没有更多数据”。

本公开实施例提供的查询方式,客户端的每次查询请求仅对一个数据表进行分页查询,相比于传统的查询方式,简化了服务端的实现逻辑,减少数据表的访问次数,提高了数据的返回速度。

需要说明的是,本公开实施例提供的多表分页查询方法,执行主体可以为多表分页查询装置,或者该多表分页查询装置中的用于执行多表分页查询的方法的控制模块。本公开实施例中以多表分页查询装置执行多表分页查询的方法为例,说明本公开实施例提供的多表分页查询的装置。

图5为本公开实施例提供的一种多表分页查询装置的结构示意图,如图5中所示,多表分页查询装置500包括:发送模块501、接收模块502、解析模块503和更新模块504;发送模块501,用于若接收第一输入,发送第一查询请求;第一查询请求包括第一查询参数,第一查询参数中分表参数的值为第一分表参数值、查询页的值为第一页值,以及每页数据量为目标数据量;第一分表参数值对应多个数据表中的第一数据表,该多个数据表为根据分表参数的值拆分的数据表;接收模块502,用于接收服务端发送的第一查询结果;第一查询结果为服务端对第一数据表进行分页查询得到的查询结果;解析模块503,用于解析接收模块接收的第一查询结果;更新模块504,用于基于解析模块503解析的第一查询结果更新查询参数为第二查询参数;发送模块501,还用于若接收第二输入,则向服务端发送第二查询请求,以使得服务端根据第二查询参数查询目标数据表;第二查询请求包括第二查询参数,目标数据表为上述多个数据表中的一个数据表。

可选地,更新模块具体用于:基于目标数据量和第一查询结果中的数据量,更新查询参数为第二查询参数。

可选地,更新模块具体用于:若第一查询结果中的数据数量等于目标数据量,则更新查询页值为第二页值;其中,第二页值为第一页值加1,第二查询请求用于请求返回第一数据表的第二查询结果。

可选地,更新模块具体用于:若第一查询结果中的数据数量小于目标数据量,则更新分表参数值为第二分表参数值,重置查询页值为第一页值;其中,第二分表参数值为与第一分表参数值相邻的分表参数值,第二分表参数值对应上述多个分表中的第二分表,第二查询请求用于请求返回第二分表的查询结果。

可选地,多表分页查询装置还包括:输出模块;该输出模块,用于若更新后的分表参数值小于最小分表参数值,或大于最大分表参数值,在接收到查询输入之后,输出提示信息,提示信息指示查询终止。

可选地,分表参数为日、周、月、季度或年;或者,分表参数为用户标识的最后一位数值;或者,分表参数为对用户标识的字符串进行哈希运算并取模运算得到的数值。

本公开实施例提供的多表分页查询装置可以实现上述多表分页查询方法实施例客户端的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

图6为本公开实施例提供的一种多表分页查询装置的结构示意图,如图6中所示,多表分页查询装置600包括:接收模块601、获取模块602、查询模块603和发送模块604;接收模块601,用于接收客户端发送的第一查询请求,第一查询请求包括第一查询参数,第一查询参数中分表参数的值为第一分表参数值、查询页的值为第一页值,以及每页数据量为目标数据量;第一分表参数值对应多个数据表中的第一数据表,该多个数据表为根据分表参数的值拆分的数据表;获取模块602,用于根据第一分表参数值,获取第一数据表;查询模块603,用于根据第一页值和目标数据量,对第一数据表进行分页查询,得到第一数据表的第一查询结果;发送模块604,用于向客户端发送第一查询结果;查询模块603,还用于在接收客户端发送的第二查询请求的情况下,根据第二查询参数,分页查询目标数据表,第二查询请求包括第二查询参数,第二查询参数为客户端根据第一查询结果更新的查询参数,目标数据表为上述多个数据表中的一个数据表。

可选地,查询模块具体用于:若第二查询参数中分表参数的值为第一分表参数值、查询页的值为第二页值,以及每页的数据量为目标数据量,则根据目标数据量,获取第一数据表的第二查询结果;其中,第一查询结果中的数据量等于目标数据量。

可选地,查询模块具体用于:若第二查询参数中分表参数的值为第二分表参数值、查询页的值为第一页值,以及每页的数据量为目标数据量,则根据第二分表参数值,对上述多个数据表中的第二数据表进行分页查询;其中,第一查询结果中的数据量小于目标数据量,第二分表参数值对应第二数据表。

可选地,分表参数为日、周、月、季度或年;或者,分表参数为用户标识的最后一位数值;或者,分表参数为对用户标识的字符串进行哈希运算并取模运算得到的数值。

本公开实施例提供的多表分页查询装置可以实现上述多表分页查询方法实施例服务端的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

本公开实施例中的多表分页查询装置可以是装置,也可以是终端中的部件、集成电路、或芯片。该装置可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、UMPC(ultra-mobile personal computer,超级移动个人计算机)、上网本或者PDA(personaldigital assistant,个人数字助理)等,非移动电子设备可以为服务器、NAS(NetworkAttached Storage,网络附属存储器)、PC(personal computer,个人计算机)、TV(television,电视机)、柜员机或者自助机等,本公开实施例不作具体限定。

本公开实施例中的多表分页查询装置可以为具有操作系统的装置。该操作系统可以为Android(安卓)操作系统,可以为iOS操作系统,还可以为其他可能的操作系统,本公开实施例不作具体限定。

本公开实施例提供的多表分页查询装置能够实现图1至图4的方法实施例实现的各个过程,为避免重复,这里不再赘述。

可选地,如图7所示,本公开实施例还提供一种客户端700,包括处理器701,存储器702,存储在存储器702上并可在所述处理器701上运行的程序或指令,该程序或指令被处理器701执行时实现上述多表分页查询方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

需要说明的是,本公开实施例中的客户端包括上述所述的移动电子设备和非移动电子设备。

图8为实现本公开实施例的一种客户端的硬件结构示意图。

该客户端800包括但不限于:射频单元801、网络模块802、音频输出单元803、输入单元804、传感器805、显示单元806、用户输入单元807、接口单元808、存储器809、以及处理器810等部件。

本领域技术人员可以理解,客户端800还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器810逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图8中示出的客户端结构并不构成对客户端的限定,客户端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。

本公开实施例提供的客户端可以实现上述多表分页查询方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

应理解的是,本公开实施例中,输入单元804可以包括GPU(Graphics ProcessingUnit,图形处理器)841和麦克风842,图形处理器841对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元806可包括显示面板861,可以采用液晶显示器、有机发光二极管等形式来配置显示面板861。用户输入单元807包括触控面板871以及其他输入设备872。触控面板871,也称为触摸屏。触控面板871可包括触摸检测装置和触摸控制器两个部分。其他输入设备872可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。存储器809可用于存储软件程序以及各种数据,包括但不限于应用程序和操作系统。处理器810可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器810中。

可选地,如图9所示,本公开实施例还提供一种服务端900,包括处理器901,存储器902,存储在存储器902上并可在所述处理器901上运行的程序或指令,该程序或指令被处理器901执行时实现上述多表分页查询方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

图10为实现本公开实施例的一种服务端的硬件结构示意图。

需要说明的是,图10示出的服务端1000仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图10所示,服务端1000包括CPU(Central Processing Unit,中央处理单元)1001,其可以根据存储在ROM(Read-Only Memory,只读存储器)1002中的程序或者从存储部分1008加载到RAM(Random Access Memory,随机访问存储器)1003中的程序而执行各种适当的动作和处理。在RAM 1003中,还存储有系统操作所需的各种程序和数据。CPU 1001、ROM1002以及RAM 1003通过总线1004彼此相连。I/O(Input/Output,输入/输出)接口1005也连接至总线1004。

以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如CRT(Cathode Ray Tube,阴极射线管)、LCD(Liquid Crystal Display,液晶显示器)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被CPU 1001执行时,执行本申请的系统中限定的各种功能。

本公开实施例提供的服务端可以实现上述多表分页查询方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

本公开实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述多表分页查询方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

其中,所述处理器为上述实施例中所述的服务端中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机ROM、RAM、磁碟或者光盘等。

本公开实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述多表分页查询方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

应理解,本公开实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本公开实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本公开各个实施例所述的方法。

上面结合附图对本公开的实施例进行了描述,但是本公开并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本公开的启示下,在不脱离本公开宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本公开的保护之内。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:一种基于多维度的案件合并方法、装置及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!