CN112069207B - 一种多表联合查询效率提升方法 - Google Patents
一种多表联合查询效率提升方法 Download PDFInfo
- Publication number
- CN112069207B CN112069207B CN202010880649.2A CN202010880649A CN112069207B CN 112069207 B CN112069207 B CN 112069207B CN 202010880649 A CN202010880649 A CN 202010880649A CN 112069207 B CN112069207 B CN 112069207B
- Authority
- CN
- China
- Prior art keywords
- task
- query
- page
- paging
- total number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000000547 structure data Methods 0.000 claims abstract description 21
- 238000004364 calculation method Methods 0.000 claims description 42
- 238000010276 construction Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24535—Query rewriting; Transformation of sub-queries or views
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及多表联合查询技术领域,特别涉及一种多表联合查询效率提升方法;包括以下步骤:步骤一:用户在前端页面提交请求参数;步骤二:前端页面获取用户提交的请求参数,采用异步请求调用后端站点,后端站点接收到请求参数后,请求后端服务进行查询;步骤三:后端服务在接收到查询分页数据和查询总数的请求后,检查任务缓存中是否包含对应的计算页码任务缓存;步骤四:前端页面在接收分页结构数据后,生成数据表格。本发明通过对查询总数和查询特定分页数据的过程进行优化,能够加快查询速度,提高查询效率。
Description
技术领域
本发明涉及多表联合查询技术领域,特别涉及一种多表联合查询效率提升方法。
背景技术
该方法主要解决数据变化不大情况下,数据库水平分表分页查询效率问题。数据变化不大,是指数据库中很少更新相关字段或删除数据行。数据库采用水平分表,可采用按时间、按取值范围、取值Hash等方式。
众所周知,分页查询前端展示主要分为两个部分:数据表格显示和分页页码显示。构造前端需要的数据,需要在后端执行查询总数sql和查询当前分页sql,查询当前分页sql的结果返回当前分页数据,查询总数sql用于返回总数并构造页码。
采用水平分表存储方案,可避免单表存储数据量过大时存储检索问题。水平分表分页查询处理原理:根据特定条件检索遍历分表,查询总数和查询分页数据。查询水平分表分页主要需要解决检索范围未知和查询结果合并的问题。分表分页sql查询一般的处理情况是,在单个请求中对分表进行union处理,然后进行查询条件筛选,最后获取总数和分页数据。采用这种方式从实际应用来看,查询缓慢、效率不够高效。
为此,提出一种多表联合查询效率提升方法。
发明内容
本发明的目的在于提供一种多表联合查询效率提升方法,该方法通过对查询总数和查询特定分页数据的过程进行优化,能够加快查询速度,提高查询效率。
为了实现上述目的,本发明的技术方案如下:
一种多表联合查询效率提升方法,包括以下步骤:
步骤一:用户在前端页面根据查询需求,提交包括查询条件和排序条件的请求参数;
步骤二:前端页面获取用户提交的请求参数,采用异步请求调用后端站点,后端站点接收到请求参数后,请求后端服务进行查询,查询过程包括查询分页数据和查询总数两个过程;
步骤三:后端服务在接收到查询分页数据和查询总数的请求后,检查任务缓存中是否包含对应的计算页码任务缓存,如果包含对应的计算页码任务缓存,从任务缓存中获取对应的计算页码任务进行计算和查找,如果未包含对应的计算页码任务缓存,创建计算总数任务,生成完总数任务后,使用单独的调度线程对任务缓存中的计算页码任务进行查找和后续计算分配,后端服务处理后得到分页结构数据,并将分页结构数据返回给前端页面;
步骤四:前端页面在接收分页结构数据后,生成数据表格。
具体的,所述步骤一中查询条件包括字段、操作符和查询值。
具体的,所述步骤一中排序条件包括字段和排序符号。
具体的,所述步骤二中后端站点包括后端站点分页查询接口和后端站点总数接口,所述后端服务为后端服务分页查询接口,所述任务缓存为内存数据字典。
具体的,所述步骤三中查询分页数据的具体过程:
(51)采用异步请求调用后端站点分页查询接口,后端站点分页查询接口收到请求参数后,添加当前会话编号,请求后端服务分页查询接口;
(52)后端服务分页查询接口接收到请求参数后,根据请求参数中的查询条件使用哈希算法创建任务编号;
(53)判断任务编号在内存数据字典中是否存在对应的计算页码任务缓存,如果存在对应的计算页码任务缓存时,获取主任务,并设置主任务的优先级+1,如果不存在对应的计算页码任务缓存时,构造查询的主任务和子任务;
(54)获取排序条件的请求参数,当排序条件的字段为分表拆分字段时,根据该排序字段,构造子任务优先级,设置每个子任务的后续子任务,当排序条件的字段不是分表拆分字段时,则根据数据库中表默认顺序进行设置优先级;
(55)将不存在任务编号和构造查询的主任务存储到内存数据字典中,所述任务编号作为内存数据字典的键用于查找,所述主任务作为内存数据字典的值进行存储;
(56)当使用当前主任务中的会话编号在内存数据字典中进行查找时,如果存在多个相同的会话编号,将非当前条件对应的主任务中的会话编号设置为取消,任务调度器不对非当前条件对应的主任务中的会话编号进行计算处理,否则通知任务调度器进行异步处理;
(57)任务调度器根据主任务的优先级,定时轮询获取需要计算的主任务,从主任务中获取一个未执行的子任务放入到总数计算队列,并通知总数计算线程进行异步处理;
(58)总数计算线程定时轮询从总数计算队列中获取一个子任务,判断主任务是否被取消,若主任务被取消则重新获取一个子任务,若主任务未被取消继续执行(59)步骤,设置子任务的任务状态为执行中,执行查询总数,当执行查询完成后设置子任务的总数和完成时间,并将子任务的任务状态设置为已完成;
(59)查询子任务中已完成任务状态的总数,得到分页数据,构造分页结构数据。
具体的,所述步骤三中查询总数的具体过程:
(61)采用异步请求调用后端站点总数接口,后端站点总数接口收到请求参数后,请求后端服务分页查询接口;
(62)后端服务分页查询接口接收到请求参数后,执行所述查询分页数据中(52)-(59)步骤;
(63)从内存数据字典中获取子任务中已查询完成的总数,返回页码数据后更新分页结构数据中的页码数量和总数。
具体的,所述分页结构数据包括数据、页码索引、总记录数和总页码数。
其中,所述(53)构造查询的主任务包括任务编号、查询条件、排序条件、分表前缀、创建时间、主任务优先级、是否取消、子任务集合和会话编号;所述(53)构造查询的子任务包括查询分表名、任务编号、总数、查询总数、子任务优先级、是否执行中、是否完成、完成时间、后续子任务和每一个分表对应一个子任务。
本发明的有益效果为:本发明利用后端服务多线程异步处理,通过数据库记录已经查询过的分页数据和总数,并将已经查询过的总数缓存到内存数据字典,在下一次使用相同的查询条件进行总数查询时,直接从内存数据字典中读取即可,能够快速返回查询的总数,提高查询效率;在下一次使用相同的查询条件和排序条件进行分页数据查询时,当取特定分页数据时,通过从内存数据字典中计算总数分布的范围,能够确定对应的数据表格位置以及范围,能够进行针对性查找,避免了无效的范围扫描,加快查询速度,提高查询效率。
附图说明
图1为本发明实施例的流程图;
图2为本发明实施例的构造子任务优先级示意图;
图3为本发明实施例的内存数据字典结构示意图;
图4为本发明实施例的执行分页SQL示意图;
图5为本发明另一个实施例的分表查询流程图;
图6为本发明另一个实施例的确定数据分布范围流程图;
图7为本发明另一个实施例的返回分页数据流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种多表联合查询效率提升方法,包括以下步骤:
步骤一:用户在前端页面根据查询需求,提交包括查询条件和排序条件的请求参数。
其中,查询条件的格式包括:字段(field)、操作符(operator)和查询值(value),字段(field)为数据表中所存在的字段,操作符(operator)包括:大于(>)、等于(=)、小于(<)、大于等于(>=)、小于等于(<=)、包含(like)和不包含(not like)、隶属(in)等,查询值为具体的取值;例如查询条件:field=’车牌号’、operator=’=’,value=’渝A12345’,field=’设备编号’、operator=’=’,value=’12345’,field=’经过时间’、operator=’>=’,value=’2020-03-0100:00:00’,field=’经过时间’、operator=’<’,value=’2020-06-0100:00:00’。
其中,排序条件的格式包括:字段(field)和排序符号(order),排序符号(order)包括:升序(asc)和降序(desc);例如排序条件:field=’经过时间’,order=’asc’。
步骤二:前端页面获取用户提交的请求参数,采用异步请求调用后端站点,后端站点接收到请求参数后,请求后端服务进行查询,查询过程包括查询分页数据和查询总数两个过程。
进一步的,本发明涉及的异步请求包括但不限于ajax异步请求。
其中,查询分页过程,采用ajax请求调用后端站点,后端站点接收到请求参数后,请求后端服务进行查询,查询分页数据的维度包括查询条件(whereCriteria)、排序条件(orderCriteria)、页码索引(page)和页码大小(size)。
其中,查询总数过程,采用ajax递归轮询调用后端站点总数接口,后端站点总数接口收到请求参数后,请求后端服务分页查询接口,后端服务分页查询接口接收到请求参数后进行查询,查询总数采用ajax递归轮询核心是保持一定的心跳,提升当前任务的优先级,任务调度器在异步处理时将优先处理高优先级的任务,进而加快计算子任务总数的过程,可以避免因为网络中断导致任务空转的情况。
步骤三:后端服务在接收到查询分页数据和查询总数的请求后,检查任务缓存中是否包含对应的计算页码任务缓存,如果包含对应的计算页码任务缓存,从任务缓存中获取对应的计算页码任务进行计算和查找,如果未包含对应的计算页码任务缓存,创建计算总数任务,生成完总数任务后,使用单独的调度线程对任务缓存中的计算页码任务进行查找和后续计算分配,后端服务处理后得到分页结构数据,并将分页结构数据返回给前端页面。
其中,查询分页过程具体包括以下步骤:
第111步:采用ajax请求调用后端站点分页查询接口。查询请求形式如下:
第112步:后端站点分页查询接口收到请求参数后,添加当前会话编号,请求后端服务分页查询接口。数据结构如下:
其中,会话编号在整个前端页面的生命周期是唯一的。
第113步:后端服务分页查询接口接收到请求参数后,根据请求参数中的查询条件使用哈希算法创建任务编号,该任务编号为哈希字符串。
第114步:判断任务编号在内存数据字典中是否存在对应的计算页码任务缓存,如果存在对应的计算页码任务缓存时,获取主任务,并设置主任务的优先级+1,如果不存在对应的计算页码任务缓存时,构造查询的主任务和子任务。
其中,构造查询的主任务的维度包括任务编号、查询条件、排序条件、分表前缀、创建时间、主任务优先级、是否取消、子任务集合和会话编号(sessionId)等参数。
其中,构造查询的子任务的维度包括查询分表名、任务编号、总数(total)、查询总数SQL、子任务优先级、是否执行中、是否完成、完成时间、后续子任务和每一个分表对应一个子任务。
其中,子任务构造过程:根据查询条件中的字段数据存储范围,构造子任务;例如查询条件:‘2020-03-0100:00:00’<=经过时间<‘2020-06-0100:00:00’,本实施例中使用经过时间按天进行分表存储,根据时间范围需要构造92个子任务,若按月存储则,需要构造3个子任务,根据主任务的表前缀以及子任务时间可推算出查询条件涉及的分表名,构造查询总数SQL,将子任务集合和主任务进行关联,查询总数SQL示例:select count(*)分表where车牌号=’渝A12345’and设备编号=’12345’。
第115步:获取排序条件的请求参数,当排序条件的字段为分表拆分字段时,根据该排序字段,构造子任务优先级,设置每个子任务的后续子任务,例如子任务1的优先级高于子任务2,子任务2的优先级高于子任务3,依次类推,当排序条件的字段不是分表拆分字段时,则根据数据库中表默认顺序进行设置优先级。构造子任务优先级如图2所示。
其中,本发明涉及的数据库用于存储分表以及对分表进行查询。
第116步:将不存在任务编号和构造查询的主任务存储到内存数据字典中,所述任务编号作为内存数据字典的键用于查找,所述主任务作为内存数据字典的值进行存储。内存数据字典结构如图3所示。
第117步:当使用当前主任务中的会话编号在内存数据字典中进行查找时,如果存在多个相同的会话编号,将非当前条件对应的主任务中的会话编号设置为取消,任务调度器不对非当前条件对应的主任务中的会话编号进行计算处理,否则通知任务调度器进行异步处理。
第118步:任务调度器根据主任务的优先级,定时轮询获取需要计算的主任务,从主任务中获取一个未执行的子任务放入到总数计算队列,并通知总数计算线程进行异步处理。
第119步:总数计算线程定时轮询从总数计算队列中获取一个子任务,判断主任务是否被取消,若主任务被取消则重新获取一个子任务,若主任务未被取消继续执行第120步,设置子任务的任务状态为执行中,执行查询总数,当执行查询完成后设置子任务的总数和完成时间,并将子任务的任务状态设置为已完成。
第120步:查询子任务中已完成任务状态的总数,构造分页结构数据;分页结构数据格式包括数据(data)、页码索引(page)、页码大小(size)、总记录数(total)和总页码数(pageCount)。
其中,查询分页数据的原理:查询第page(page为页码索引,范围:page>=1)页的分页数据的处理的查找范围为:((页码索引-1)*分页大小+1)<=数据范围<(页码索引*分页大小+1),分页索引的范围为:1<=页码索引<=Math.Ceiling(总数/分页大小)。
第121步:若总数=0且任务未完成,page=1时,根据子任务的优先级获取第1个子任务的分页数据。获取分页SQL如下所示:
其中,参考附图4,若当前子任务的分表未获取到数据,则按照子任务优先级按顺序执行分页SQL,获取到的分页数据条数等于页面大小时,停止执行SQL,否则遍历后续子任务,直达子任务遍历完成或获取到足够的数量。
参考附图5,本发明涉及的另一个实施例,假设子任务1对应的分表按照查询条件包含20条记录,则获取页码索引为1、页面大小为10时,只需获取前10条记录返回即可。
其中,假设子任务1对应的分表查询条件包含0条记录,则继续从子任务2中获取数据,若子任务获取到5条,则还需要从后续的子任务中依次获取剩余的5条数据。
最优情况,从第一个子任务中可以获取到10条数据,最差情况,遍历所有子任务,获取到小于等于10条的数据。
第122步:若总数=0且任务未完成,page>1时,分页范围不合法,直接返回空数据。
第123步:若总数>0,page>1,根据子任务中的总数分布,针对性跳过某些分表,只查找特定分表范围。查找特定分表范围算法如下:
参考附图6,本发明涉及的另一个实施例,算法主要用于循环遍历子任务集合,在循环内部对子任务的总数进行求和运算(子任务集合(总数)),排除掉子任务总数累计和小于页码索引*页码大小的子任务,在剩余子任务中确定数据分布范围;假设需要查询的页码索引为20,页码大小为10,子任务1到子任务23之间总数合计为200,子任务24总数为50,则只需要查询子任务24对应分表t_table_24的前10条数据。
参考附图7,本发明涉及的另一个实施例,假设前23个子任务总数合计200,子任务24总数=2,子任务25总数=3,子任务26总数=3;则构造查询SQL分别从子任务24、25、26中对应分表获取8条分页数据,再从子任务26之后的任务中获取2条数据。若从后续任务中获取到10条数据则返回,若遍历到遍历结束未找剩余2条记录,则直接返回8条分页数据。
其中,通过在内存的数据字典中记录查询结果的分布,查询分页时自动计算数据结果集分布范围,当用户查询特定分页时,可以避免无效的范围检索,大幅度地提升查询效能。
第124步:完成分页数据获取后,构造返回的分页结构数据。
第125步:前端页面在收到分页结构数据后,生成数据表格,使用根据page、size以及pageCount生成页码范围,记录显示total。
其中,查询总数过程具体包括以下步骤:
第211步:采用ajax请求调用后端站点总数接口,后端站点总数接口收到请求参数后,请求后端服务分页查询接口;
第212步:后端服务分页查询接口接收到请求参数后,执行所述查询分页数据第113步-第119步;
第213步:从内存数据字典中获取子任务中已查询完成的总数,返回如下数据结构:总数、是否完成以及是否完成的判断依据,当子任务集合中所有子任务处于完成状态,否则为未完成;
第214步:前端页面查询若ajax执行过程异常或失败,重新从第211步开始执行,直到任务查询成功、条件变更以及条件取消为止;
第215步:前端页面查询若ajax执行成功,收到返回的页码数据后,更新pageCount页码范围和total总数;
第216步:若返回的页码数据是否完成为false,则重新从第211步开始执行,直到是否完成为true,是否完成为true时终止后续步骤。
本发明涉及的查询总数过程的具体例子如下:
步骤四:前端页面在接收分页结构数据后,生成数据表格;构造返回的分页结构数据的维度包括:数据(data)、页码索引(page)、页码大小(size)、总记录数(total)、总页码数(pageCount)、总记录数取内存数据字典中的子任务总数合计以及总页码数=Math.Ceiling(总数/分页大小)。
本发明利用后端服务多线程异步处理,通过数据库记录已经查询过的分页数据和总数,并将已经查询过的总数缓存到内存数据字典,在下一次使用相同的查询条件进行总数查询时,直接从内存数据字典中读取即可,能够快速返回查询的总数,提高查询效率;在下一次使用相同的查询条件和排序条件进行分页数据查询时,当取特定分页数据时,通过从内存数据字典中计算总数分布的范围,能够确定对应的数据表格位置以及范围,能够进行针对性查找,避免了无效的范围扫描,加快查询速度,提高查询效率。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (6)
1.一种多表联合查询效率提升方法,其特征在于,包括以下步骤:
步骤一:用户在前端页面根据查询需求,提交包括查询条件和排序条件的请求参数;
步骤二:前端页面获取用户提交的请求参数,采用异步请求调用后端站点,后端站点接收到请求参数后,请求后端服务进行查询,查询过程包括查询分页数据和查询总数两个过程;
步骤三:后端服务在接收到查询分页数据和查询总数的请求后,检查任务缓存中是否包含对应的计算页码任务缓存,如果包含对应的计算页码任务缓存,从任务缓存中获取对应的计算页码任务进行计算和查找,如果未包含对应的计算页码任务缓存,创建计算总数任务,生成完总数任务后,使用单独的调度线程对任务缓存中的计算页码任务进行查找和后续计算分配,后端服务处理后得到分页结构数据,并将分页结构数据返回给前端页面;
所述查询分页数据的具体过程:
(51)采用异步请求调用后端站点分页查询接口,后端站点分页查询接口收到请求参数后,添加当前会话编号,请求后端服务分页查询接口;
(52)后端服务分页查询接口接收到请求参数后,根据请求参数中的查询条件使用哈希算法创建任务编号;
(53)判断任务编号在内存数据字典中是否存在对应的计算页码任务缓存,如果存在对应的计算页码任务缓存时,获取主任务,并设置主任务的优先级+1,如果不存在对应的计算页码任务缓存时,构造查询的主任务和子任务;
(54)获取排序条件的请求参数,当排序条件的字段为分表拆分字段时,根据该排序字段,构造子任务优先级,设置每个子任务的后续子任务,当排序条件的字段不是分表拆分字段时,则根据数据库中表默认顺序进行设置优先级;
(55)将不存在任务编号和构造查询的主任务存储到内存数据字典中,所述任务编号作为内存数据字典的键用于查找,所述主任务作为内存数据字典的值进行存储;
(56)当使用当前主任务中的会话编号在内存数据字典中进行查找时,如果存在多个相同的会话编号,将非当前条件对应的主任务中的会话编号设置为取消,任务调度器不对非当前条件对应的主任务中的会话编号进行计算处理,否则通知任务调度器进行异步处理;
(57)任务调度器根据主任务的优先级,定时轮询获取需要计算的主任务,从主任务中获取一个未执行的子任务放入到总数计算队列,并通知总数计算线程进行异步处理;
(58)总数计算线程定时轮询从总数计算队列中获取一个子任务,判断主任务是否被取消,若主任务被取消则重新获取一个子任务,若主任务未被取消继续执行(59)步骤,设置子任务的任务状态为执行中,执行查询总数,当执行查询完成后设置子任务的总数和完成时间,并将子任务的任务状态设置为已完成;
(59)查询子任务中已完成任务状态的总数,得到分页数据,构造分页结构数据;
所述查询总数的具体过程:
(61)采用异步请求调用后端站点总数接口,后端站点总数接口收到请求参数后,请求后端服务分页查询接口;
(62)后端服务分页查询接口接收到请求参数后,执行所述查询分页数据中(52)-(59)步骤;
(63)从内存数据字典中获取子任务中已查询完成的总数,返回页码数据后更新分页结构数据中的页码数量和总数;
步骤四:前端页面在接收分页结构数据后,生成数据表格。
2.根据权利要求1所述的一种多表联合查询效率提升方法,其特征在于,所述步骤一中查询条件包括字段、操作符和查询值。
3.根据权利要求1所述的一种多表联合查询效率提升方法,其特征在于,所述步骤一中排序条件包括字段和排序符号。
4.根据权利要求1所述的一种多表联合查询效率提升方法,其特征在于,所述后端站点包括后端站点分页查询接口和后端站点总数接口,所述后端服务为后端服务分页查询接口,所述任务缓存为内存数据字典。
5.根据权利要求1所述的一种多表联合查询效率提升方法,其特征在于,所述分页结构数据包括数据、页码索引、总记录数和总页码数。
6.根据权利要求1所述的一种多表联合查询效率提升方法,其特征在于,所述(53)构造查询的主任务包括任务编号、查询条件、排序条件、分表前缀、创建时间、主任务优先级、是否取消、子任务集合和会话编号;所述(53)构造查询的子任务包括查询分表名、任务编号、总数、查询总数、子任务优先级、是否执行中、是否完成、完成时间、后续子任务和每一个分表对应一个子任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010880649.2A CN112069207B (zh) | 2020-08-27 | 2020-08-27 | 一种多表联合查询效率提升方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010880649.2A CN112069207B (zh) | 2020-08-27 | 2020-08-27 | 一种多表联合查询效率提升方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112069207A CN112069207A (zh) | 2020-12-11 |
CN112069207B true CN112069207B (zh) | 2023-10-03 |
Family
ID=73659563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010880649.2A Active CN112069207B (zh) | 2020-08-27 | 2020-08-27 | 一种多表联合查询效率提升方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112069207B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114840765A (zh) * | 2022-05-24 | 2022-08-02 | 中国平安财产保险股份有限公司 | 分页处理方法、装置、电子设备及存储介质 |
CN114969098A (zh) * | 2022-06-21 | 2022-08-30 | 中银金融科技有限公司 | 一种数据处理方法、装置、电子设备、及计算机存储介质 |
CN114816586B (zh) * | 2022-06-28 | 2022-09-27 | 深圳高灯计算机科技有限公司 | 可见数据加载方法、装置、计算机设备和存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694608A (en) * | 1995-01-27 | 1997-12-02 | Borland International, Inc. | Non-modal database system wth methods for incremental maintenance of live reports |
CN103902708A (zh) * | 2014-03-31 | 2014-07-02 | 安徽新华博信息技术股份有限公司 | 一种数据查询方法 |
CN105468644A (zh) * | 2014-09-10 | 2016-04-06 | 阿里巴巴集团控股有限公司 | 一种用于在数据库中进行查询的方法与设备 |
CN105843958A (zh) * | 2016-04-15 | 2016-08-10 | 北京思特奇信息技术股份有限公司 | 一种基于缓存的服务端分页方法和系统 |
CN106649435A (zh) * | 2016-09-07 | 2017-05-10 | 努比亚技术有限公司 | 数据查询装置及方法 |
CN109241099A (zh) * | 2018-08-22 | 2019-01-18 | 中国平安人寿保险股份有限公司 | 一种数据查询方法及终端设备 |
CN109460404A (zh) * | 2018-09-03 | 2019-03-12 | 中新网络信息安全股份有限公司 | 一种基于redis的高效Hbase分页查询方法 |
CN110737857A (zh) * | 2019-09-11 | 2020-01-31 | 苏州浪潮智能科技有限公司 | 一种后端分页加速方法、系统、终端及存储介质 |
CN111367952A (zh) * | 2020-03-02 | 2020-07-03 | 中国邮政储蓄银行股份有限公司 | 缓存数据的分页查询方法、系统及计算机可读存储介质 |
-
2020
- 2020-08-27 CN CN202010880649.2A patent/CN112069207B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694608A (en) * | 1995-01-27 | 1997-12-02 | Borland International, Inc. | Non-modal database system wth methods for incremental maintenance of live reports |
CN103902708A (zh) * | 2014-03-31 | 2014-07-02 | 安徽新华博信息技术股份有限公司 | 一种数据查询方法 |
CN105468644A (zh) * | 2014-09-10 | 2016-04-06 | 阿里巴巴集团控股有限公司 | 一种用于在数据库中进行查询的方法与设备 |
CN105843958A (zh) * | 2016-04-15 | 2016-08-10 | 北京思特奇信息技术股份有限公司 | 一种基于缓存的服务端分页方法和系统 |
CN106649435A (zh) * | 2016-09-07 | 2017-05-10 | 努比亚技术有限公司 | 数据查询装置及方法 |
CN109241099A (zh) * | 2018-08-22 | 2019-01-18 | 中国平安人寿保险股份有限公司 | 一种数据查询方法及终端设备 |
CN109460404A (zh) * | 2018-09-03 | 2019-03-12 | 中新网络信息安全股份有限公司 | 一种基于redis的高效Hbase分页查询方法 |
CN110737857A (zh) * | 2019-09-11 | 2020-01-31 | 苏州浪潮智能科技有限公司 | 一种后端分页加速方法、系统、终端及存储介质 |
CN111367952A (zh) * | 2020-03-02 | 2020-07-03 | 中国邮政储蓄银行股份有限公司 | 缓存数据的分页查询方法、系统及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
"分布式结构化数据分页查询中的动态归并算法";段翰聪等;《小型微型计算机系统》;1503-1506 * |
Also Published As
Publication number | Publication date |
---|---|
CN112069207A (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112069207B (zh) | 一种多表联合查询效率提升方法 | |
US7447680B2 (en) | Method and apparatus for optimizing execution of database queries containing user-defined functions | |
Perez et al. | History-aware query optimization with materialized intermediate views | |
US8336051B2 (en) | Systems and methods for grouped request execution | |
Babu et al. | Adaptive caching for continuous queries | |
EP0877327B1 (en) | Method and apparatus for performing a join query in a database system | |
US8046354B2 (en) | Method and apparatus for re-evaluating execution strategy for a database query | |
Luo et al. | Toward a progress indicator for database queries | |
CN108256115B (zh) | 一种面向SparkSql的HDFS小文件实时合并实现方法 | |
CN114020779A (zh) | 自适应优化检索性能数据库及数据查询方法 | |
CN115617520A (zh) | 资源参数配置方法及装置、电子设备和存储介质 | |
US7912838B2 (en) | System and method for performing just-in-time priming of a database cache | |
Sarawagi et al. | Reordering query execution in tertiary memory databases | |
CN117648495B (zh) | 一种基于云原生向量数据的数据推送方法及系统 | |
US8255388B1 (en) | Providing a progress indicator in a database system | |
CN112162986B (zh) | 一种并行top-k范围skyline查询方法和系统 | |
Slivinskas et al. | Adaptable query optimization and evaluation in temporal middleware | |
Chaudhuri et al. | Stop-and-restart style execution for long running decision support queries | |
JP2008165622A (ja) | マルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム | |
CA2427216A1 (en) | Slow materialization sort of partially ordered inputs in a database system | |
US7392359B2 (en) | Non-blocking distinct grouping of database entries with overflow | |
CN115455057A (zh) | 数据库连接操作的执行方法、存储介质与计算机设备 | |
CN102436443A (zh) | 一种提升基于数据库业务系统处理性能的方法 | |
Wang et al. | Efficient gpu-based query processing with pruned list caching in search engines | |
Meng et al. | Performance analysis of three text-join algorithms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |