CN112783922A - 一种基于关系数据库的查询方法及装置 - Google Patents
一种基于关系数据库的查询方法及装置 Download PDFInfo
- Publication number
- CN112783922A CN112783922A CN202110138029.6A CN202110138029A CN112783922A CN 112783922 A CN112783922 A CN 112783922A CN 202110138029 A CN202110138029 A CN 202110138029A CN 112783922 A CN112783922 A CN 112783922A
- Authority
- CN
- China
- Prior art keywords
- result
- query
- sub
- processes
- sets
- 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.)
- Granted
Links
Images
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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种基于关系数据库的查询方法,所述方法在获取到输入查询指令之后,可以对输入查询指令中的N个子查询语句在关系数据库内部采用并行方式处理数据做交集处理,即对N个子查询语句的N个子查询结果进行并集操作的方式,这样,可以有效的利用当前的CPU的多核处理能力,从而缩短当前数据库执行交集的时间,即缩短基于关系数据库的数据查询时间,从而提高查询的执行效率,进而提高了用户体验。
Description
技术领域
本申请涉及关系数据库管理领域,尤其涉及一种基于关系数据库的查询方法及装置。
背景技术
在现有的关系数据库的查询过程中,一般分为下面三个阶段:
1,词法语法分析,主要是将用户的输入文本(SQL),转化成一个内部的数据结构,一般称之为语法解析树,并验证语法的正确性,最终得到一个表示SQL的语法解析树;
2,查询优化,将前一个阶段的语法解析树,进行基于规则以及基于物理代价的优化,生成一个最优的查询计划;
3,执行查询计划,将前一阶段生成的查询计划予以执行(一般采用迭代器的方式),得到结果返回给用户。
在前面提到的第2阶段,目前针对要处理的SQL,目前的处理方案一般会改写子查询的位置,主要是根据子查询的输出的结果集进行重排序,使得得到如下一个等价SQL:(subquery1x)intersec(suquery2x)intersec(subqyery3x)....intersec(subqueryNx),使得subqueryAx的输出结果集小于等于subqueryBx,如果A>B。这样在第三阶段采用迭代器模型优先执行输出结果集最小的子查询。而对于第三阶段,目前迭代器主要采用串行方式进行处理,无法使用多核CPU来加速处理这种情况,故此,亟需一种可以利用多核CPU基于关系数据库进行并行方式查询的方案。
发明内容
本申请提供实现了一种基于关系数据库的查询方法,以实现有效的利用当前的CPU的多核处理能力,从而缩短当前数据库执行交集的时间,即缩短基于关系数据库的数据查询时间,从而提高查询的执行效率,进而提高了用户体验。
本申请提供了一种基于关系数据库的查询方法,所述方法包括:
获取输入查询指令;其中,输入查询指令包括N个子查询语句,N为正整数;
若所述输入查询指令中的第一个子查询语句满足预设条件,则启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合,其中,所述结果交集集合包括N-1个结果集;
若所述N-1不为1,则将N作为M,以及,所述结果交集集合中的N-1个结果集作为目标结果集,启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集;其中,M/2取正整数,M/2个进程中每个进程处理的结果集数量最多为2,且每个进程处理的各个结果集均不相同;
若所述M/2不为1,则将M/2作为M,以及,所述M/2个结果集作为目标结果集,继续执行所述启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集的步骤,直至M/2为1;
若所述N-1为1或所述M/2为1,则将所述结果集作为所述输入查询指令对应的查询结果。
本申请还提供了一种基于关系数据库的查询装置,所述装置包括:
获取单元,用于获取输入查询指令;其中,输入查询指令包括N个子查询语句,N为正整数;
第一确定单元,用于若所述输入查询指令中的第一个子查询语句满足预设条件,则启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合,其中,所述结果交集集合包括N-1个结果集;
第二确定单元,用于若所述N-1不为1,则将N作为M,以及,所述结果交集集合中的N-1个结果集作为目标结果集,启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集;其中,M/2取正整数,M/2个进程中每个进程处理的结果集数量最多为2,且每个进程处理的各个结果集均不相同;
第三确定单元,用于若所述M/2不为1,则将M/2作为M,以及,所述M/2个结果集作为目标结果集,继续执行所述启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集的步骤,直至M/2为1;
第四确定单元,用于若所述N-1为1或所述M/2为1,则将所述结果集作为所述输入查询指令对应的查询结果。
本申请还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行如基于上述任意一项所述的基于关系数据库的查询方法。
本申请还提供了一种电子设备,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行如上述任意一项所述的基于关系数据库的查询方法。
由上述技术方案可以看出,本申请提供了一种基于关系数据库的查询方法,所述方法包括:获取输入查询指令;其中,输入查询指令包括N个子查询语句,N为正整数;若所述输入查询指令中的第一个子查询语句满足预设条件,则启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合,其中,所述结果交集集合包括N-1个结果集;若所述N-1不为1,则将N作为M,以及,所述结果交集集合中的N-1个结果集作为目标结果集,启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集;其中,M/2取正整数,M/2个进程中每个进程处理的结果集数量最多为2,且每个进程处理的各个结果集均不相同;若所述M/2不为1,则将M/2作为M,以及,所述M/2个结果集作为目标结果集,继续执行所述启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集的步骤,直至M/2为1;若所述N-1为1或所述M/2为1,则将所述结果集作为所述输入查询指令对应的查询结果。可见,本申请在获取到输入查询指令之后,可以对输入查询指令中的N个子查询语句在关系数据库内部采用并行方式处理数据做交集处理,即对N个子查询语句的N个子查询结果进行并集操作的方式,这样,可以有效的利用当前的CPU的多核处理能力,从而缩短当前数据库执行交集的时间,即缩短基于关系数据库的数据查询时间,从而提高查询的执行效率,进而提高了用户体验。
上述的非惯用的优选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
为了更清楚地说明本申请实施例或现有的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一种基于关系数据库的查询方法的流程示意图;
图2为本申请一实施例提供的一种基于关系数据库的查询装置的结构示意图;
图3为本申请一实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本申请的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面结合附图,详细说明本申请的各种非限制性实施方式。
参见图1,示出了本申请实施例中的一种基于关系数据库的查询方法,其中,该方法可以完全应用于终端设备(例如手机、笔记本、电子通信手表等移动设备),或者可以完全应用于服务器,或者可以部分步骤应用于终端设备,部分步骤应用于服务器。接下来,将对本申请实施例中的一种基于关系数据库的查询方法进行介绍,具体地,所述方法例如可以包括以下步骤:
S101:获取输入查询指令。
在本实施例中,所述输入查询指令,可以理解为用户所输入的用于查询关系数据库中的数据的指令。需要说明的是,在一种实现方式中,所述输入查询指令可以为SQL查询指令。其中,输入查询指令包括N个子查询语句,N为正整数。
需要说明的是,在本实施例的一种实现方式中,输入查询指令可以包括多个子查询语句,其中,每个子查询语句可以包括至少一个子查询过滤条件,子查询过滤条件可以理解为用于过滤筛选数据的条件。举例来说,假设输入查询指令为“(Select a1,a2 from Xwhere X.a1=1)intersec(select a1,a2 from Y where Y.a2=2)”,该输入查询指令包括两个子查询语句,分别为“(Select a1,a2 from X where X.a1=1)”和“(select a1,a2from Y where Y.a2=2)”,其中,“(Select a1,a2 from X where X.a1=1)”中的子查询过滤条件为“a1=1”,“(select a1,a2from Y where Y.a2=2)”中的子查询过滤条件为“a2=2”。
目前针对输入查询指令,目前的处理方案一般会改写子查询的位置,主要是根据子查询的输出的结果集进行重排序,使得我们得到如下一个等价SQL:(subquery1x)intersec(suquery2x)intersec(subqyery3x)intersec(subqueryNx),使得subqueryAx的输出结果集小于等于subqueryBx,如果A>B。这样在采用迭代器模型时可以优先执行输出结果集最小的子查询。
S102:若所述输入查询指令中的第一个子查询语句满足预设条件,则启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合。
在本实施例中,输入查询指令中的子查询语句可以按照预设的顺序排列(比如根据子查询语句的输出的结果集中的结果数量进行重排序,比如结果数量由多到少进行排序),其中,所述第一个子查询语句为在所述输入查询指令对应的子查询语句序列中排在第一个位置的子查询语句。所述预设条件为所述第一个子查询语句对应的中间状态值小于或等于内存剩余容量。
在本实施例中,可以先确定第一个子查询语句对应的中间状态值,接着判断第一个子查询语句对应的中间状态值是否小于或等于内存剩余容量,若第一个子查询语句对应的中间状态值小于或等于内存剩余容量,即所述输入查询指令中的第一个子查询语句满足预设条件,则启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合,其中,所述结果交集集合包括N-1个结果集(即结果交集)。也就是说,N-1个进程中每个进程分别确定输入查询指令中除第一个子查询语句以外的一个子查询语句(即第二个子查询语句至第N个子查询语句中的一个子查询语句)与所述第一个子查询语句的结果交集,且N-1个进程中每个进程所处理的除第一个子查询语句以外的子查询语句均不相同。举例来说,所述输入查询指令包括第一个子查询语句、第二个子查询语句和第三个子查询语句,若所述输入查询指令中的第一个子查询语句满足预设条件,则启动2个进程分别确定第一个子查询语句和第二个子查询语句的结果交集,以及第一个子查询语句和第三个子查询语句的结果交集,得到包括2个结果集(即第一个子查询语句和第二个子查询语句的结果交集,以及第一个子查询语句和第三个子查询语句的结果交集)的结果交集集合。
在一种实现方式中,在所述启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合的步骤之前,所述方法还可以包括:将所述第一个子查询语句的格式转换为hash表。
需要说明的是,在本实施例的一种实现方式中,若所述输入查询指令中的第一个子查询语句不满足预设条件,则可以采用串行处理方式对所述N个子查询语句进行查询处理,得到所述输入查询指令对应的查询结果。具体地,若第一个子查询语句对应的中间状态值大于内存剩余容量,即所述输入查询指令中的第一个子查询语句不满足预设条件,可以将所述第一个子查询语句存储为一个临时文件,并可以采用串行处理方式对所述N个子查询语句进行查询处理,得到所述输入查询指令对应的查询结果。
S103:若所述N-1不为1,则将N作为M,以及,所述结果交集集合中的N-1个结果集作为目标结果集,启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集。
若所述N-1不为1,即结果交集集合包括的结果集的数量不为1个,则将N作为M,以及,所述结果交集集合中的N-1个结果集作为目标结果集,启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集;其中,M/2取正整数,可以理解的是M/2为大于(M-1)/2且小于或等于(M+1)/2的正整数,也就是说,可以得到Q个结果集,其中,Q为大于(M-1)/2且小于或等于(M+1)/2的正整数;且,M/2个进程中每个进程处理的结果集数量最多为2,即每个进程处理的结果集数量可以为1或2个,且每个进程处理的各个结果集均不相同。
举例来说,假设M、N为3,结果交集集合包括结果集A、结果集B和结果集C,启动M/2(即2)个进程,利用所述2个进程确定所述目标结果集中每两个结果集的结果并集,比如一个进程处理结果集A和结果集B的结果并集,另一个进程处理结果集C,得到2个结果集(即结果集A和结果集B的结果并集和结果集C)。
S104:若所述M/2不为1,则将M/2作为M,以及,所述M/2个结果集作为目标结果集,继续执行所述启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集的步骤,直至M/2为1。
若所述M/2不为1,说明尚未得到最终的结果,则可以将M/2作为M,以及,所述M/2个结果集作为目标结果集,继续执行所述启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集的步骤,直至M/2为1。
举例来说,假设M、N为3,结果交集集合包括结果集A、结果集B和结果集C,启动M/2(即2)个进程,利用所述2个进程确定所述目标结果集中每两个结果集的结果并集,比如一个进程处理结果集A和结果集B的结果并集,另一个进程处理结果集C,得到2个结果集(即结果集A和结果集B的结果并集和结果集C)。由于此时结果集为2,不为1,则将2作为M,利用所述M/2(即1)个进程确定所述目标结果集中两个结果集(即结果集A和结果集B的结果并集和结果集C)的结果并集,得到1个结果集。
S105:若所述N-1为1或所述M/2为1,则将所述结果集作为所述输入查询指令对应的查询结果。
若所述N-1为1或所述M/2为1,则说明此时已经完成将输入查询指令中的N个子查询语句各自对应的查询结果合并为1个结果集,此时,可以将该结果集作为所述输入查询指令对应的查询结果。
由上述技术方案可以看出,本申请提供了一种基于关系数据库的查询方法,所述方法包括:获取输入查询指令;其中,输入查询指令包括N个子查询语句,N为正整数;若所述输入查询指令中的第一个子查询语句满足预设条件,则启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合,其中,所述结果交集集合包括N-1个结果集;若所述N-1不为1,则将N作为M,以及,所述结果交集集合中的N-1个结果集作为目标结果集,启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集;其中,M/2取正整数,M/2个进程中每个进程处理的结果集数量最多为2,且每个进程处理的各个结果集均不相同;若所述M/2不为1,则将M/2作为M,以及,所述M/2个结果集作为目标结果集,继续执行所述启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集的步骤,直至M/2为1;若所述N-1为1或所述M/2为1,则将所述结果集作为所述输入查询指令对应的查询结果。可见,本申请在获取到输入查询指令之后,可以对输入查询指令中的N个子查询语句在关系数据库内部采用并行方式处理数据做交集处理,即对N个子查询语句的N个子查询结果进行并集操作的方式,这样,可以有效的利用当前的CPU的多核处理能力,从而缩短当前数据库执行交集的时间,即缩短基于关系数据库的数据查询时间,从而提高查询的执行效率,进而提高了用户体验。
如图2所示,为本申请所述基于关系数据库的查询方法装置的一个具体实施例。本实施例提供的所述装置,即用于执行上述实施例所述方法的实体装置。其技术方案本质上与上述实施例一致,上述实施例中的相应描述同样适用于本实施例中。本实施例中所述装置包括:
获取单元201,用于获取输入查询指令;其中,输入查询指令包括N个子查询语句,N为正整数;
第一确定单元202,用于若所述输入查询指令中的第一个子查询语句满足预设条件,则启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合,其中,所述结果交集集合包括N-1个结果集;
第二确定单元203,用于若所述N-1不为1,则将N作为M,以及,所述结果交集集合中的N-1个结果集作为目标结果集,启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集;其中,M/2取正整数,M/2个进程中每个进程处理的结果集数量最多为2,且每个进程处理的各个结果集均不相同;
第三确定单元204,用于若所述M/2不为1,则将M/2作为M,以及,所述M/2个结果集作为目标结果集,继续执行所述启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集的步骤,直至M/2为1;
第四确定单元205,用于若所述N-1为1或所述M/2为1,则将所述结果集作为所述输入查询指令对应的查询结果。
可选的,所述装置还包括转换单元,用于:在所述启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合的步骤之前,将所述第一个子查询语句的格式转换为hash表。
可选的,所述装置还包括第五确定单元,用于:
若所述输入查询指令中的第一个子查询语句不满足预设条件,则采用串行处理方式对所述N个子查询语句进行查询处理,得到所述输入查询指令对应的查询结果。
可选的,所述第一个子查询语句为在所述输入查询指令对应的子查询语句序列中排在第一个位置的子查询语句。
可选的,所述预设条件为所述第一个子查询语句对应的中间状态值小于或等于内存剩余容量。
图3是本申请实施例提供的一种电子设备的结构示意图。在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放执行指令。具体地,执行指令即可被执行的计算机程序。存储器可以包括内存和非易失性存储器,并向处理器提供执行指令和数据。
在一种可能实现的方式中,处理器从非易失性存储器中读取对应的执行指令到内存中然后运行,也可从其它设备上获取相应的执行指令,以在逻辑层面上形成基于关系数据库的查询方法装置。处理器执行存储器所存放的执行指令,以通过执行的执行指令实现本申请任一实施例中提供的基于关系数据库的查询方法方法。
上述如本申请图1所示实施例提供的基于关系数据库的查询方法装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(CentralProcessing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
本申请实施例还提出了一种可读介质,该可读存储介质存储有执行指令,存储的执行指令被电子设备的处理器执行时,能够使该电子设备执行本申请任一实施例中提供的基于关系数据库的查询方法方法,并具体用于执行上述基于关系数据库的查询方法的方法。
前述各个实施例中所述的电子设备可以为计算机。
本领域内的技术人员应明白,本申请的实施例可提供为方法或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例,或软件和硬件相结合的形式。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种基于关系数据库的查询方法,其特征在于,所述方法包括:
获取输入查询指令;其中,输入查询指令包括N个子查询语句,N为正整数;
若所述输入查询指令中的第一个子查询语句满足预设条件,则启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合,其中,所述结果交集集合包括N-1个结果集;
若所述N-1不为1,则将N作为M,以及,所述结果交集集合中的N-1个结果集作为目标结果集,启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集;其中,M/2取正整数,M/2个进程中每个进程处理的结果集数量最多为2,且每个进程处理的各个结果集均不相同;
若所述M/2不为1,则将M/2作为M,以及,所述M/2个结果集作为目标结果集,继续执行所述启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集的步骤,直至M/2为1;
若所述N-1为1或所述M/2为1,则将所述结果集作为所述输入查询指令对应的查询结果。
2.根据权利要求1所述的方法,其特征在于,所述第一个子查询语句为在所述输入查询指令对应的子查询语句序列中排在第一个位置的子查询语句。
3.根据权利要求1所述的方法,其特征在于,所述预设条件为所述第一个子查询语句对应的中间状态值小于或等于内存剩余容量。
4.根据权利要求1所述的方法,其特征在于,在所述启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合的步骤之前,所述方法还包括:
将所述第一个子查询语句的格式转换为hash表。
5.根据权利要求1或3所述的方法,其特征在于,所述方法还包括:
若所述输入查询指令中的第一个子查询语句不满足预设条件,则采用串行处理方式对所述N个子查询语句进行查询处理,得到所述输入查询指令对应的查询结果。
6.一种基于关系数据库的查询装置,其特征在于,所述装置包括:
获取单元,用于获取输入查询指令;其中,输入查询指令包括N个子查询语句,N为正整数;
第一确定单元,用于若所述输入查询指令中的第一个子查询语句满足预设条件,则启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合,其中,所述结果交集集合包括N-1个结果集;
第二确定单元,用于若所述N-1不为1,则将N作为M,以及,所述结果交集集合中的N-1个结果集作为目标结果集,启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集;其中,M/2取正整数,M/2个进程中每个进程处理的结果集数量最多为2,且每个进程处理的各个结果集均不相同;
第三确定单元,用于若所述M/2不为1,则将M/2作为M,以及,所述M/2个结果集作为目标结果集,继续执行所述启动M/2个进程,利用所述M/2个进程确定所述目标结果集中每两个结果集的结果并集,得到M/2个结果集的步骤,直至M/2为1;
第四确定单元,用于若所述N-1为1或所述M/2为1,则将所述结果集作为所述输入查询指令对应的查询结果。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括转换单元,用于:在所述启动N-1个进程分别确定第二个子查询语句至第N个子查询语句各自分别与所述第一个子查询语句的结果交集,得到结果交集集合的步骤之前,将所述第一个子查询语句的格式转换为hash表。
8.根据权利要求6或7所述的装置,其特征在于,所述装置还包括第五确定单元,用于:
若所述输入查询指令中的第一个子查询语句不满足预设条件,则采用串行处理方式对所述N个子查询语句进行查询处理,得到所述输入查询指令对应的查询结果。
9.一种存储介质,其特征在于,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行如权利要求1~5任意一项所述的基于关系数据库的查询方法。
10.一种电子设备,其特征在于,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行如权利要求1~5任意一项所述的基于关系数据库的查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110138029.6A CN112783922B (zh) | 2021-02-01 | 2021-02-01 | 一种基于关系数据库的查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110138029.6A CN112783922B (zh) | 2021-02-01 | 2021-02-01 | 一种基于关系数据库的查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112783922A true CN112783922A (zh) | 2021-05-11 |
CN112783922B CN112783922B (zh) | 2022-02-25 |
Family
ID=75760350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110138029.6A Active CN112783922B (zh) | 2021-02-01 | 2021-02-01 | 一种基于关系数据库的查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112783922B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102810096A (zh) * | 2011-06-02 | 2012-12-05 | 阿里巴巴集团控股有限公司 | 一种基于单字索引系统的检索方法和装置 |
WO2013119658A1 (en) * | 2012-02-09 | 2013-08-15 | Ianywhere Solutions, Inc. | Parallelizing query optimization |
CN103309903A (zh) * | 2012-03-16 | 2013-09-18 | 刘龙 | 一种基于云计算的位置搜索系统及方法 |
CN106610999A (zh) * | 2015-10-26 | 2017-05-03 | 北大方正集团有限公司 | 查询处理方法和装置 |
US20180137170A1 (en) * | 2016-11-11 | 2018-05-17 | Sap Se | Estimating string intersections for database systems |
CN108874907A (zh) * | 2018-05-25 | 2018-11-23 | 北京明略软件系统有限公司 | 一种数据查询方法和装置、计算机可读存储介质 |
CN110100241A (zh) * | 2016-12-16 | 2019-08-06 | 华为技术有限公司 | 一种用于编译串行和并行数据库查询执行计划的数据库系统和方法 |
US20200074107A1 (en) * | 2018-09-04 | 2020-03-05 | International Business Machines Corporation | Fine-grained access control to datasets |
CN110968723A (zh) * | 2018-09-29 | 2020-04-07 | 深圳云天励飞技术有限公司 | 一种图像特征值的搜索方法、装置及电子设备 |
US20200184278A1 (en) * | 2014-03-18 | 2020-06-11 | Z Advanced Computing, Inc. | System and Method for Extremely Efficient Image and Pattern Recognition and Artificial Intelligence Platform |
-
2021
- 2021-02-01 CN CN202110138029.6A patent/CN112783922B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102810096A (zh) * | 2011-06-02 | 2012-12-05 | 阿里巴巴集团控股有限公司 | 一种基于单字索引系统的检索方法和装置 |
WO2013119658A1 (en) * | 2012-02-09 | 2013-08-15 | Ianywhere Solutions, Inc. | Parallelizing query optimization |
CN103309903A (zh) * | 2012-03-16 | 2013-09-18 | 刘龙 | 一种基于云计算的位置搜索系统及方法 |
US20200184278A1 (en) * | 2014-03-18 | 2020-06-11 | Z Advanced Computing, Inc. | System and Method for Extremely Efficient Image and Pattern Recognition and Artificial Intelligence Platform |
CN106610999A (zh) * | 2015-10-26 | 2017-05-03 | 北大方正集团有限公司 | 查询处理方法和装置 |
US20180137170A1 (en) * | 2016-11-11 | 2018-05-17 | Sap Se | Estimating string intersections for database systems |
CN110100241A (zh) * | 2016-12-16 | 2019-08-06 | 华为技术有限公司 | 一种用于编译串行和并行数据库查询执行计划的数据库系统和方法 |
CN108874907A (zh) * | 2018-05-25 | 2018-11-23 | 北京明略软件系统有限公司 | 一种数据查询方法和装置、计算机可读存储介质 |
US20200074107A1 (en) * | 2018-09-04 | 2020-03-05 | International Business Machines Corporation | Fine-grained access control to datasets |
CN110968723A (zh) * | 2018-09-29 | 2020-04-07 | 深圳云天励飞技术有限公司 | 一种图像特征值的搜索方法、装置及电子设备 |
Non-Patent Citations (3)
Title |
---|
孙利华等: "基于SkipNet支持多属性范围查询的云资源共享设计", 《计算机应用》 * |
李瑞: "数据库查询优化技术的研究与实现", 《电子科学技术》 * |
黄华等: "大规模流程模型库的高效检索算法", 《武汉大学学报(理学版)》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112783922B (zh) | 2022-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN111104421A (zh) | 一种基于数据接口标准配置的数据查询方法及装置 | |
CN112699141A (zh) | 多源异构数据的数据查询方法、装置、存储介质及设备 | |
CN112395303A (zh) | 查询的执行方法、装置、电子设备及计算机可读介质 | |
CN111198898B (zh) | 大数据查询方法及大数据查询装置 | |
CN110597618A (zh) | 一种数据交换系统的任务拆分方法及装置 | |
CN110888756A (zh) | 一种诊断日志生成方法及装置 | |
CN113688602A (zh) | 一种任务处理方法以及装置 | |
CN114328612A (zh) | 查询优化器的数据处理方法、装置及电子设备 | |
AU2019241002B2 (en) | Transaction processing method and system, and server | |
CN109345081B (zh) | 一种数据采集方法、装置及电子设备 | |
CN114529413A (zh) | 一种区块链交易的处理方法、区块链节点及电子设备 | |
CN112783922B (zh) | 一种基于关系数据库的查询方法及装置 | |
CN112434056A (zh) | 一种详情数据的查询方法及装置 | |
CN110083602B (zh) | 一种基于hive表的数据存储及数据处理的方法及装置 | |
CN112765286A (zh) | 一种基于关系数据库的查询方法及装置 | |
CN109558403B (zh) | 数据聚合方法及装置、计算机装置及计算机可读存储介质 | |
CN116521705A (zh) | 一种数据查询方法、装置、存储介质及电子设备 | |
CN116414859A (zh) | 数据处理方法及其装置、电子设备、计算机可读存储介质 | |
CN116204396A (zh) | 一种针对分析型数据库性能的测试方法和装置 | |
CN115774750A (zh) | 数据库入湖配置方法、系统、电子设备及存储介质 | |
CN110688530B (zh) | 一种json数据的处理方法及装置 | |
CN111339035B (zh) | 一种目标数据的查询方法、装置、计算机设备和存储介质 | |
CN111159229B (zh) | 一种数据查询方法及装置 | |
CN114358596A (zh) | 指标计算方法及装置 |
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 |