一种数据查询的方法、装置、存储介质及电子设备与流程
1.本说明书涉及计算机技术领域,尤其涉及一种数据查询的方法、装置、存储介质及电子设备。
背景技术:
2.随着科技的发展,数据库得到了广泛的应用。随着数据库广泛应用,数据库中表内存储的隐私数据得到了越来越多的关注。
3.数据库中的表存储着不同的信息,当想要查询某一信息时,生成的该查询语句的执行计划可能是先将包含这一信息的多张表进行连接之后再进行查询,数据库中的表之间的连接方式有很多种,比如内连接、外连接和交叉连接等。每张表之间的连接方式可能相同,也可能不同。并且,在查询时,可能查询的是数据库中某一信息的全部数据行,也可能只查询数据库中某一行或者某些行的数据。在当只查询数据库中某一行或者某些行的数据时,生成的该查询语句的执行计划是需要先将多张表进行连接,得到多张表的连接结果,再根据查询语句中的输出限制条件输出结果。但在执行计划时,需要先进行多张表的连接计算,再根据输出限制条件输出结果,这会导致在对多张表进行连接计算时可能会存在大量的无效数据的计算,会使查询的速度低,从而会降低查询的性能。
4.因此,如何进行高效的数据查询是一个亟待解决的问题。
技术实现要素:
5.本说明书提供一种数据查询的方法、装置、存储介质及电子设备,以部分的解决现有技术存在的上述问题。
6.本说明书采用下述技术方案:
7.本说明书提供一种数据查询的方法,包括:
8.获取查询语句,其中,所述查询语句中携带需要查询的表标识、所需查询的表之间的连接条件以及所述查询语句的输出限制条件;
9.确定各表标识对应的表,作为待查询表;
10.根据各待查询表和所述各待查询表之间的连接条件,确定驱动表和非驱动表;
11.根据所述输出限制条件,对所述驱动表进行限制处理,得到限制后的驱动表;
12.根据所述各待查询表之间的连接条件,将所述非驱动表和限制后的驱动表进行连接,得到所述查询语句对应的查询结果。
13.可选地,所述连接包括外连接;
14.根据各待查询表和所述各待查询表之间的连接条件,确定驱动表,具体包括:
15.将由各待查询表构成的集合作为待查询表集;
16.根据所述各待查询表之间的连接条件,采用预设的划分策略,将所述待查询表集进行划分,得到待查询表子集;
17.针对各待查询表子集,确定该待查询表子集中除外连接以外的表,根据该待查询
表子集中除外连接以外的表之间的连接条件,将该待查询表子集中除外连接以外的表进行连接,得到驱动表。
18.可选地,根据该待查询表子集中除外连接以外的表之间的连接条件进行连接,将该待查询表子集中除外连接以外的表进行连接,得到驱动表,具体包括:
19.根据预设的变换策略,对该待查询表子集中各表之间的连接条件进行等价变换;
20.根据该待查询表子集中除外连接以外的表之间的变换后的连接条件,将该待查询表子集中除外连接以外的表进行连接,得到驱动表。
21.可选地,所述输出限制条件包括第一类条件和第二类条件;
22.当所述输出限制条件为第一类条件时,根据所述输出限制条件,对所述驱动表进行限制处理,得到限制后的驱动表,具体包括:
23.确定所述第一类条件中输出结果数量,在所述驱动表中筛选所述输出结果数量的数据,确定以所述输出结果数量的数据构成的表,作为限制后的驱动表;
24.当所述输出限制条件为第二类条件时,根据所述输出限制条件,对所述驱动表进行限制处理,得到限制后的驱动表,具体包括:
25.确定所述第二类条件中数据起始位置以及偏移量n,按所述驱动表中各数据的排序,在所述驱动表中筛选排序在所述数据起始位置之后的n个数据,确定以所述n个数据构成的表,作为限制后的驱动表,其中n为正整数。
26.可选地,若所述输出限制条件为第二类条件,根据所述输出限制条件,对所述驱动表进行限制处理,具体包括:
27.确定所述驱动表和所述非驱动表之间的连接条件中包含的连接字段;
28.当所述连接字段在所述非驱动表中具有唯一约束,且划分出的待查询表子集与所述待查询表集相同时,根据所述第二类条件,对所述驱动表进行限制处理,得到限制后的驱动表。
29.可选地,针对各待查询表子集,确定该待查询表子集中除外连接以外的表,具体包括:
30.针对各待查询表子集,构建以该待查询表子集中包含的表为节点、以该待查询表子集中包含的表之间的连接条件为边的该待查询表子集对应的连通图;
31.确定所述连通图中除边上的连接条件为外连接以外的节点中包含的表为该待查询表子集中除外连接以外的表。
32.可选地,采用预设的划分策略,将所述待查询表集进行划分,得到待查询表子集,具体包括:
33.以将具有连接条件的表划分至同一待查询表子集的划分方式,对所述待查询表集进行划分,得到待查询表子集,其中,不同的待查询表子集之间不具有交集。
34.本说明书提供了一种数据查询的装置,包括:
35.获取模块,用于获取查询语句,其中,所述查询语句中携带需要查询的表标识、所需查询的表之间的连接条件以及所述查询语句的输出限制条件;
36.确定模块,用于确定各表标识对应的表,作为待查询表;
37.连接模块,用于根据各待查询表和所述各待查询表之间的连接条件,确定驱动表和非驱动表;
38.限制模块,用于根据所述输出限制条件,对所述驱动表进行限制处理,得到限制后的驱动表;
39.输出模块,根据所述各待查询表之间的连接条件,将所述非驱动表和限制后的驱动表进行连接,得到所述查询语句对应的查询结果。
40.可选地,所述连接包括外连接;
41.所述连接模块具体用于,将由各待查询表构成的集合作为待查询表集;根据所述各待查询表之间的连接条件,采用预设的划分策略,将所述待查询表集进行划分,得到待查询表子集;针对各待查询表子集,确定该待查询表子集中除外连接以外的表,根据该待查询表子集中除外连接以外的表之间的连接条件,将该待查询表子集中除外连接以外的表进行连接,得到驱动表。
42.可选地,所述连接模块具体用于,根据预设的变换策略,对该待查询表子集中各表之间的连接条件进行等价变换;根据该待查询表子集中除外连接以外的表之间的变换后的连接条件,将该待查询表子集中除外连接以外的表进行连接,得到驱动表。
43.可选地,所述输出限制条件包括第一类条件和第二类条件;
44.当所述输出限制条件为第一类条件时,所述限制模块具体用于,确定所述第一类条件中输出结果数量,在所述驱动表中筛选所述输出结果数量的数据,确定以所述输出结果数量的数据构成的表,作为限制后的驱动表;
45.当所述输出限制条件为第二类条件时,所述限制模块具体用于,确定所述第二类条件中数据起始位置以及偏移量n,按所述驱动表中各数据的排序,在所述驱动表中筛选排序在所述数据起始位置之后的n个数据,确定以所述n个数据构成的表,作为限制后的驱动表,其中n为正整数。
46.可选地,若所述输出限制条件为第二类条件,所述限制模块具体用于,确定所述驱动表和所述非驱动表之间的连接条件中包含的连接字段;当所述连接字段在所述非驱动表中具有唯一约束,且划分出的待查询表子集与所述待查询表集相同时,根据所述第二类条件,对所述驱动表进行限制处理,得到限制后的驱动表。
47.可选地,所述连接模块具体用于,针对各待查询表子集,构建以该待查询表子集中包含的表为节点、以该待查询表子集中包含的表之间的连接条件为边的该待查询表子集对应的连通图;确定所述连通图中除边上的连接条件为外连接以外的节点中包含的表为该待查询表子集中除外连接以外的表。
48.可选地,所述连接模块具体用于,以将具有连接条件的表划分至同一待查询表子集的划分方式,对所述待查询表集进行划分,得到待查询表子集,其中,不同的待查询表子集之间不具有交集。
49.本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据查询的方法。
50.本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据查询的方法。
51.本说明书采用的上述至少一个技术方案能够达到以下有益效果:
52.本说明书提供的数据查询的方法中,根据获取的查询语句中携带的需要查询的表标识,确定表标识所对应的表,作为待查询表,根据各待查询表和各待查询表之间的连接关
系,确定驱动表和非驱动表,根据查询语句中携带的输出限制条件,对驱动表进行限制处理,将进行限制处理后的驱动表和非驱动表进行连接,得到查询语句对应的查询结果。
53.从上述方法中可以看出,本方法中在进行数据查询时,根据查询语句中的表标识,确定待查询的表,根据各待查询表之间的连接关系,确定驱动表和非驱动表,以查询语句中的输出限制条件先对驱动表进行限制处理,再将限制后的驱动表与非驱动表进行连接,得到查询语句对应的查询结果,使得连接过程的计算量减小,减少了无效数据的计算,加快了数据查询的速度。
附图说明
54.此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附
55.图中:
56.图1为本说明书中一种数据查询的方法的流程示意图;
57.图2为本说明书中一种子集1对应的连通图;
58.图3为本说明书提供的一种数据查询的装置的示意图;
59.图4为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
60.为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
61.本说明书的实施例提供了一种数据查询的方法、装置、存储介质及电子设备,以下结合附图,详细说明本说明书各实施例提供的技术方案。
62.图1为本说明书中一种数据查询的方法的流程示意图,具体包括以下步骤:
63.s100:获取查询语句,其中,所述查询语句中携带需要查询的表标识、所需查询的表之间的连接条件以及所述查询语句的输出限制条件。
64.在实际应用场景中,用户在进行数据查询时,需要查询的表可能会有多张,而各表之间的连接方式可能相同,也可能不同,比如查询语句中各表的连接方式可能是外连接和内连接的混合连接,不仅仅是单一的连接方式。
65.基于此,在本说明书中,用于执行查询语句的设备获取查询语句,其中,查询语句中携带需要查询的表标识、所需查询的表之间的连接条件以及查询语句的输出限制条件。上述执行查询语句的设备可以是需要查询的表所在的服务端,或能够执行本说明书方案的诸如服务器、个人计算机(personal computer,pc)等设备。为了方便说明,下面以服务器为执行主体进行说明。
66.查询语句中携带的输出限制条件是对查询的输出结果的限制,有两种类型,一种是对输出结果数量的限制,另一种是对数据起始位置和偏移量的限制,例如,假设查询语句1为:
[0067][0068]
查询语句1的意思为将以t1为主表,按照t1.c1=t2.c1条件与t2进行左外连接,再按照t1.c2=t3.c2条件与t3进行内连接,得到的结果1,将以t4为主表,按照t4.c1=t5.c1条件与t5进行左外连接,再按照t4.c2=t6.c2条件与t6进行内连接,得到的结果2,将结果1与结果2进行交叉连接得到最终要查询的表,将该表中所有字段的前10个数据作为查询结果输出,其中,查询语句1中的t1~6为表标识,“t1 left join t2 on t1.c1=t2.c1,t3 where t1.c2=t3.c2”和“t4 left join t5 on t4.c1=t5.c1,t6 where t4.c2=t6.c2”为连接条件,查询语句1中的输出限制条件为“limit 10”,该输出限制条件是对输出结果数量的限制,表示的是对连接完成的表取前10个的数据,由前10个的数据构成的表作为查询语句1的查询结果。假设查询语句2为:
[0069][0070][0071]
查询语句2的意思为将以t1为主表,按照t1.c1=t2.c1条件与t2进行左外连接,再按照t1.c2=t3.c2条件与t3进行内连接,将得到的结果从第10个数据开始输出,输出结果的数量为1,其中,查询语句2中的t1~3为表标识,“t1 left join t2 on t1.c1=t2.c1,t3 where t1.c2=t3.c2”为连接条件,查询语句2中的输出限制条件为“limit 10,1”,该输出限制条件是对数据起始位置和偏移量的限制,表示的是对连接完成的表从第10个开始取1个的数据,也就是取第11个的数据,由第11个数据构成的表作为查询语句2的查询结果。
[0072]
s102:确定各表标识对应的表,作为待查询表。
[0073]
服务器确定各表标识对应的表,作为待查询表,继续沿用上例,查询语句1中的表标识为t1~6,根据各表标识在数据库中确定各表,表标识t1~6分别对应着数据库中的表1
~6,将表1~6作为待查询表。
[0074]
s104:根据各待查询表和所述各待查询表之间的连接条件,确定驱动表和非驱动表。
[0075]
服务器根据各待查询表和各待查询表之间的连接条件,确定驱动表和非驱动表,其中,连接的方式可以有外连接、内连接、交叉连接等多种方式,驱动表是表连接中的基础表,在进行表连接时,以驱动表的数据作为循环的基础数据,然后以每一个基础数据为筛选条件在非驱动表中筛选数据。
[0076]
具体的,各待查询表之间的连接方式包括外连接,可以根据预设的变换策略,对待查询表之间的连接条件进行等价变换,根据除外连接以外的待查询表之间的变换后的连接条件,将除外连接以外的待查询表进行连接,得到驱动表。其中,预设的变换策略是根据关系代数等价变换的原则进行预设的,要保证以变换后的连接条件进行连接得到的表与以未进行变换的连接条件进行连接得到的表相同。继续沿用上例,查询语句1中的连接方式有内连接和外连接两种连接方式,按照预设的变换策略,对查询语句1中的表1~6之间的连接条件进行等价变换,查询语句1中表1先与表2外连接,再与表3内连接,经过变换策略变换后表1先与表3内连接,再与表2外连接,即变换后的连接条件为“t1 inner join t3 on t1.c2=t3.c2 left join t2 on t1.c1=t2.c1”,根据变换后的连接条件,将除外连接以外的表进行连接,也就是将表1和表3进行内连接,将得到的表作为驱动表1,通过上例方式,将表4~6按照同样的方式进行连接,得到驱动表2。同时,从待查询表中确定出非驱动表,非驱动表为表2和表5。
[0077]
进一步的,为了方便得到驱动表,可以将由各待查询表构成的集合作为待查询表集,根据各待查询表之间的连接条件,采用预设的划分策略,将待查询表集进行划分,得到待查询表子集,针对各待查询表子集,确定该待查询表子集中除外连接以外的表,根据该待查询表子集中除外连接以外的表之间的连接条件,将该待查询表子集中除外连接以外的表进行连接,得到驱动表。其中,在采用预设的划分策略对待查询表集进行划分时,以将具有连接条件的表划分至同一待查询表子集的划分方式,对待查询表集进行划分,得到待查询表子集,不同的待查询表子集之间不具有交集。若根据预设的划分策略,待查询表集不可以划分为至少两个待查询表子集时,直接将待查询表集作为待查询表子集。
[0078]
继续沿用步骤s102中的例子,查询语句1中的连接方式有内连接和外连接两种连接方式,将由表1~6构成的集合作为待查询表集,根据各待查询表(即表1~6)之间的连接条件,以将具有连接条件的表划分至同一待查询表子集的划分方式,对待查询表集进行划分,表1与表2之间的连接是外连接,与表3之间连接是内连接,但是与表4~6之间没有连接,也没有连接条件,而且表4与表5之间的连接是外连接,与表6之间连接是内连接,故将待查询表集可以划分为两个待查询表子集,即子集1和子集2,子集1中包含的表有表1~3,子集1内的表之间的连接条件为“t1 left join t2 on t1.c1=t2.c1,t3 where t1.c2=t3.c2”,子集2中包含的表有表4~6,子集2内的表之间的连接条件为“t4 left join t5 on t4.c1=t5.c1,t6 where t4.c2=t6.c2”,子集1和子集2之间没有交集。
[0079]
在得到各待查询表子集之后,针对各待查询表子集,确定该待查询表子集中除外连接以外的表,根据预设的变换策略,对该待查询表子集中各表之间的连接条件进行等价变换,根据该待查询表子集中除外连接以外的表之间的变换后的连接条件,将该待查询表
子集中除外连接以外的表进行连接,得到驱动表。
[0080]
继续沿用上例,针对子集1,按照预设的变换策略,对子集1中的表1~3之间的连接条件进行等价变换,子集1中表1先与表2外连接,再与表3内连接,经过变换策略变换后表1先与表3内连接,再与表2外连接,即变换后的连接条件为“t1 inner join t3 on t1.c2=t3.c2 left join t2 on t1.c1=t2.c1”,根据变换后的连接条件,将除外连接以外的表进行连接,也就是将表1和表3进行内连接,将得到的表作为驱动表1,通过上例方式,将子集2按照同样的方式进行连接,得到驱动表2。同时,从每个子集中确定出非驱动表,子集1中非驱动表为表2,子集2中非驱动表为表5。
[0081]
s106:根据所述输出限制条件,对所述驱动表进行限制处理,得到限制后的驱动表。
[0082]
服务器根据输出限制条件,对驱动表进行限制处理,得到限制后的驱动表,其中,输出限制条件包括第一类条件和第二类条件。
[0083]
具体的,服务器确定查询语句中的输出限制条件,当输出限制条件为第一类条件时,需要确定第一类条件中输出结果数量,在驱动表中筛选输出结果数量的数据,确定以输出结果数量的数据构成的表,作为限制后的驱动表。当输出限制条件为第二类条件时,确定驱动表和非驱动表之间的连接条件中包含的连接字段,判断连接字段在非驱动表中是否具有唯一约束,且划分出的待查询表子集与待查询表集是否相同。当连接字段在非驱动表中具有唯一约束,且划分出的待查询表子集与待查询表集相同时,确定第二类条件中数据起始位置以及偏移量n,按驱动表中各数据的排序,在驱动表中筛选排序在数据起始位置之后的n个数据,确定以n个数据构成的表,作为限制后的驱动表,其中,n为正整数,在表中被设置唯一约束的字段里的数据具有唯一性,不能重复出现,即,如果上述连接字段在非驱动表中为主键,则上述连接字段具有唯一约束,否则,需要判断上述连接字段在非驱动表中是否出现过两次以上,若是,则上述连接字段不具有唯一约束,否则,上述连接字段具有唯一约束。
[0084]
继续沿用上例,查询语句1中的输出限制条件为“limit 10”,该输出限制条件为第一类条件,确定第一类条件中输出结果数量为10,在驱动表1中筛选10个数据,确定由筛选出的10个数据构成的表,作为限制后的驱动表1。按照同样的方式对驱动表2进行限制,得到限制后的驱动表2。
[0085]
再假设查询语句2中字段c1在表2中为具有唯一约束的字段,并将查询语句2按照步骤s102~s104中的例子进行处理,在步骤s104中得到的驱动表为驱动表3,查询语句2中的输出限制条件为“limit 10,1”,该输出限制条件为第二类条件,确定驱动表3和非驱动表(即表2)之间的连接条件中包含的连接字段,也就是字段c1,判断字段c1在表2中是否具有唯一约束,且划分出的待查询表子集与待查询表集是否相同。字段c1在表2中具有唯一约束,且划分出的待查询表子集与待查询表集相同,需要确定输出限制条件(即“limit10,1”)中数据起始位置以及偏移量n,即数据起始位置为10,偏移量为1,按驱动表3中各数据的排序,在驱动表3中筛选排序在第10个数据之后的1个数据,确定以筛选出的数据(即驱动表3中第11个数据)构成的表,作为限制后的驱动表3。
[0086]
s108:根据所述各待查询表之间的连接条件,将所述非驱动表和限制后的驱动表进行连接,得到所述查询语句对应的查询结果。
[0087]
服务器根据各待查询表之间的连接条件,将非驱动表和限制后的驱动表进行连接,得到查询语句对应的查询结果。继续沿用上例,对于查询语句1,根据表2与限制后的驱动表1之间的连接条件,将表2与限制后的驱动表1进行连接,得到第一连接结果。根据表5与限制后的驱动表2之间的连接条件,将表5与限制后的驱动表2进行连接,得到第二连接结果,将第一连接结果与第二连接结果进行交叉连接,对进行交叉连接后的连接结果进行限制,得到查询语句1对应的查询结果。而对于查询语句2,根据表2与限制后的驱动表3之间的连接条件,将表2与限制后的驱动表3进行连接,得到查询语句2对应的查询结果。
[0088]
一般情况下在进行数据查询时,先根据查询语句中的表标识确定待查询表,按照各待查询表之间的连接条件,将各待查询表进行连接,再将得到的连接结果根据输出限制条件进行处理,将处理后的结果作为查询结果输出,但本方法中在进行数据查询时,根据查询语句中的表标识确定待查询表,采用预设的划分策略将由各待查询表构成的待查询表集进行划分,得到各待查询表子集,根据待查询表子集中各待查询表之间的连接关系,采用预设的变换策略进行变换,根据变换后的连接条件,将待查询表子集中除外连接之外的表进行连接得到驱动表。确定查询语句中的输出限制条件,根据非驱动表的连接字段和待查询子集的数量进行判断是否可以对驱动表进行限制处理。将限制后的驱动表与非驱动表进行连接,得到查询语句的查询结果。通过采用预设的变换策略,对各待查询表之间的连接关系进行变换,将待查询表中除外连接之外的表进行连接的方式得到可以进行限制处理的驱动表,从而可以先对驱动表进行限制处理,再进行与非驱动表连接的方式,可以减少无效数据的计算,加快查询速度。
[0089]
继续沿用上例,假设表1~6中均包含20个数据且每个表之间的数据均匹配,对于查询语句1,在一般情况下是先根据表1~6之间的连接条件,将表1~6进行连接,在这个过程中需要将以主表中的20个数据为筛选条件对其他表进行筛选,尤其是在将结果1和结果2进行交叉连接时,需要进行非常大的计算,但是,本方法虽然在上述步骤s104中进行除外连接之外的连接时,将以主表中的20个数据为筛选条件对其他表进行筛选,得到了驱动表1和驱动表2,但在上述步骤s106中,对驱动表1和驱动表2进行了限制处理,限制后的驱动表1和驱动表2中均只包含10个数据,再将驱动表与非驱动表进行外连接,将得到的结果进行交叉连接,本方法在外连接和后续的交叉连接中均是以10个数据进行筛选条件进行筛选的,相对于一般情况来说减少了大量的计算,加快了查询的速度。
[0090]
对于查询语句2,在一般情况下是先根据表1~3之间的连接条件,将表1~3进行连接,在这个过程中需要将以主表中的20个数据为筛选条件对其他表进行筛选,将连接后的包含20个数据的结果从从第10个数据开始输出,输出结果的数量为1,也就是将第11个数据作为查询结果,但是,本方法虽然在上述步骤s104中进行除外连接之外的连接时,将以主表中的20个数据为筛选条件对其他表进行筛选,得到了驱动表3,但在上述步骤s106中,对驱动表3进行了限制处理,限制后的驱动表3只包含1个数据,再将驱动表3与表2进行外连接,直接将得到的结果作为查询结果,本方法在进行外连接之前将驱动表进行限制处理,再以1个数据为筛选条件进行筛选的,直接得到查询结果,相对于一般情况来说减少了大量的计算,加快了查询的速度。
[0091]
上述方法步骤s104中,针对各待查询表子集,在确定该待查询表子集中除外连接以外的表时,可以构建以该待查询表子集中包含的表为节点、以该待查询表子集中包含的
表之间的连接条件为边的该待查询表子集对应的连通图,确定连通图中除边上的连接条件为外连接以外的节点中包含的表为该待查询表子集中除外连接以外的表。结合上述方法步骤s104中的例子进行举例,如图2所示,图2为本说明书中一种子集1对应的连通图,对于查询语句1,有作为待查询表子集的子集1和子集2,针对子集1,可以构建以子集1中包含的表1~3作为节点,将子集1中包含的表之间的连接条件作为边的连通图,图3中节点1包含的表为表1,节点2包含的表为表2,节点3中包含的表为表3,节点与节点间连接的边上包含的是表之间的连接条件,对于表之间的连接条件在图3的节点间连接的边上就不再注明。确定连通图中除边上的连接条件为外连接以外的节点中包含的表,也就是表1和表3,将表1和表3作为该待查询表子集中除外连接以外的表。按照上述方法构建子集2对应的连通图,根据连通图确定子集2中除外连接以外的表,也就是表4和表6。
[0092]
基于创建的连通图,在上述方法步骤s106中,可以在输出限制条件为第二类条件时,确定驱动表和非驱动表之间的连接条件中包含的连接字段,判断连接字段在非驱动表中是否具有唯一约束,且是否只有一个连通图。当连接字段在非驱动表中具有唯一约束,且只有一个连通图时,可以根据第二类条件,对驱动表进行限制处理,得到限制后的驱动表。
[0093]
本说明书中的执行主体服务器中包含优化器、执行器等多个部件,其中的优化器可以根据上述步骤s100~步骤s108的方法生成查询语句对应的执行计划,之后执行器再根据优化器生成的执行计划去进行数据查询,得到查询语句对应的查询结果。
[0094]
以上为本说明书的一个或多个实施例提供的数据查询的方法,基于同样的思路,本说明书还提供了相应的数据查询的装置,如图3所示。
[0095]
图3为本说明书提供的一种数据查询的装置示意图,具体包括:
[0096]
获取模块200,用于获取查询语句,其中,所述查询语句中携带需要查询的表标识、所需查询的表之间的连接条件以及所述查询语句的输出限制条件;
[0097]
确定模块202,用于确定各表标识对应的表,作为待查询表;
[0098]
连接模块204,用于根据各待查询表和所述各待查询表之间的连接条件,确定驱动表和非驱动表;
[0099]
限制模块206,用于根据所述输出限制条件,对所述驱动表进行限制处理,得到限制后的驱动表;
[0100]
输出模块208,根据所述各待查询表之间的连接条件,将所述非驱动表和限制后的驱动表进行连接,得到所述查询语句对应的查询结果。
[0101]
可选地,所述连接包括外连接;
[0102]
所述连接模块204具体用于,将由各待查询表构成的集合作为待查询表集;根据所述各待查询表之间的连接条件,采用预设的划分策略,将所述待查询表集进行划分,得到待查询表子集;针对各待查询表子集,确定该待查询表子集中除外连接以外的表,根据该待查询表子集中除外连接以外的表之间的连接条件,将该待查询表子集中除外连接以外的表进行连接,得到驱动表。
[0103]
可选地,所述连接模块204具体用于,根据预设的变换策略,对该待查询表子集中各表之间的连接条件进行等价变换;根据该待查询表子集中除外连接以外的表之间的变换后的连接条件,将该待查询表子集中除外连接以外的表进行连接,得到驱动表。
[0104]
可选地,所述输出限制条件包括第一类条件和第二类条件;
language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0113]
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmel at91sam、microchip pic18f26k20以及silicone labs c8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0114]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0115]
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0116]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0117]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0118]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0119]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0120]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0121]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0122]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0123]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0124]
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0125]
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0126]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0127]
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
技术特征:
1.一种数据查询的方法,包括:获取查询语句,其中,所述查询语句中携带需要查询的表标识、所需查询的表之间的连接条件以及所述查询语句的输出限制条件;确定各表标识对应的表,作为待查询表;根据各待查询表和所述各待查询表之间的连接条件,确定驱动表和非驱动表;根据所述输出限制条件,对所述驱动表进行限制处理,得到限制后的驱动表;根据所述各待查询表之间的连接条件,将所述非驱动表和限制后的驱动表进行连接,得到所述查询语句对应的查询结果。2.如权利要求1所述的方法,所述连接包括外连接;根据各待查询表和所述各待查询表之间的连接条件,确定驱动表,具体包括:将由各待查询表构成的集合作为待查询表集;根据所述各待查询表之间的连接条件,采用预设的划分策略,将所述待查询表集进行划分,得到待查询表子集;针对各待查询表子集,确定该待查询表子集中除外连接以外的表,根据该待查询表子集中除外连接以外的表之间的连接条件,将该待查询表子集中除外连接以外的表进行连接,得到驱动表。3.如权利要求2所述的方法,根据该待查询表子集中除外连接以外的表之间的连接条件进行连接,将该待查询表子集中除外连接以外的表进行连接,得到驱动表,具体包括:根据预设的变换策略,对该待查询表子集中各表之间的连接条件进行等价变换;根据该待查询表子集中除外连接以外的表之间的变换后的连接条件,将该待查询表子集中除外连接以外的表进行连接,得到驱动表。4.如权利要求2所述的方法,所述输出限制条件包括第一类条件和第二类条件;当所述输出限制条件为第一类条件时,根据所述输出限制条件,对所述驱动表进行限制处理,得到限制后的驱动表,具体包括:确定所述第一类条件中输出结果数量,在所述驱动表中筛选所述输出结果数量的数据,确定以所述输出结果数量的数据构成的表,作为限制后的驱动表;当所述输出限制条件为第二类条件时,根据所述输出限制条件,对所述驱动表进行限制处理,得到限制后的驱动表,具体包括:确定所述第二类条件中数据起始位置以及偏移量n,按所述驱动表中各数据的排序,在所述驱动表中筛选排序在所述数据起始位置之后的n个数据,确定以所述n个数据构成的表,作为限制后的驱动表,其中n为正整数。5.如权利要求4所述的方法,若所述输出限制条件为第二类条件,根据所述输出限制条件,对所述驱动表进行限制处理,具体包括:确定所述驱动表和所述非驱动表之间的连接条件中包含的连接字段;当所述连接字段在所述非驱动表中具有唯一约束,且划分出的待查询表子集与所述待查询表集相同时,根据所述第二类条件,对所述驱动表进行限制处理,得到限制后的驱动表。6.如权利要求2所述的方法,针对各待查询表子集,确定该待查询表子集中除外连接以外的表,具体包括:
针对各待查询表子集,构建以该待查询表子集中包含的表为节点、以该待查询表子集中包含的表之间的连接条件为边的该待查询表子集对应的连通图;确定所述连通图中除边上的连接条件为外连接以外的节点中包含的表为该待查询表子集中除外连接以外的表。7.如权利要求2所述的方法,采用预设的划分策略,将所述待查询表集进行划分,得到待查询表子集,具体包括:以将具有连接条件的表划分至同一待查询表子集的划分方式,对所述待查询表集进行划分,得到待查询表子集,其中,不同的待查询表子集之间不具有交集。8.一种数据查询的装置,包括:获取模块,用于获取查询语句,其中,所述查询语句中携带需要查询的表标识、所需查询的表之间的连接条件以及所述查询语句的输出限制条件;确定模块,用于确定各表标识对应的表,作为待查询表;连接模块,用于根据各待查询表和所述各待查询表之间的连接条件,确定驱动表和非驱动表;限制模块,用于根据所述输出限制条件,对所述驱动表进行限制处理,得到限制后的驱动表;输出模块,根据所述各待查询表之间的连接条件,将所述非驱动表和限制后的驱动表进行连接,得到所述查询语句对应的查询结果。9.如权利要求8所述的装置,所述连接包括外连接;所述连接模块具体用于,将由各待查询表构成的集合作为待查询表集;根据所述各待查询表之间的连接条件,采用预设的划分策略,将所述待查询表集进行划分,得到待查询表子集;针对各待查询表子集,确定该待查询表子集中除外连接以外的表,根据该待查询表子集中除外连接以外的表之间的连接条件,将该待查询表子集中除外连接以外的表进行连接,得到驱动表。10.如权利要求9所述的装置,所述连接模块具体用于,根据预设的变换策略,对该待查询表子集中各表之间的连接条件进行等价变换;根据该待查询表子集中除外连接以外的表之间的变换后的连接条件,将该待查询表子集中除外连接以外的表进行连接,得到驱动表。11.如权利要求9所述的装置,所述输出限制条件包括第一类条件和第二类条件;当所述输出限制条件为第一类条件时,所述限制模块具体用于,确定所述第一类条件中输出结果数量,在所述驱动表中筛选所述输出结果数量的数据,确定以所述输出结果数量的数据构成的表,作为限制后的驱动表;当所述输出限制条件为第二类条件时,所述限制模块具体用于,确定所述第二类条件中数据起始位置以及偏移量n,按所述驱动表中各数据的排序,在所述驱动表中筛选排序在所述数据起始位置之后的n个数据,确定以所述n个数据构成的表,作为限制后的驱动表,其中n为正整数。12.如权利要求11所述的装置,若所述输出限制条件为第二类条件,所述限制模块具体用于,确定所述驱动表和所述非驱动表之间的连接条件中包含的连接字段;当所述连接字段在所述非驱动表中具有唯一约束,且划分出的待查询表子集与所述待查询表集相同时,根据所述第二类条件,对所述驱动表进行限制处理,得到限制后的驱动表。
13.如权利要求9所述的装置,所述连接模块具体用于,针对各待查询表子集,构建以该待查询表子集中包含的表为节点、以该待查询表子集中包含的表之间的连接条件为边的该待查询表子集对应的连通图;确定所述连通图中除边上的连接条件为外连接以外的节点中包含的表为该待查询表子集中除外连接以外的表。14.如权利要求9所述的装置,所述连接模块具体用于,以将具有连接条件的表划分至同一待查询表子集的划分方式,对所述待查询表集进行划分,得到待查询表子集,其中,不同的待查询表子集之间不具有交集。15.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~7任一项所述的方法。16.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述权利要求1~7任一项所述的方法。
技术总结
本说明书公开了一种数据查询的方法、装置、存储介质和电子设备,所述方法包括:根据获取的查询语句中携带的需要查询的表标识,确定表标识所对应的表,作为待查询表,根据各待查询表和各待查询表之间的连接关系,确定驱动表和非驱动表,根据查询语句中携带的输出限制条件,对驱动表进行限制处理,将进行限制处理后的驱动表和非驱动表进行连接,得到查询语句对应的查询结果。本方法中根据各待查询表之间的连接关系,确定驱动表和非驱动表,以查询语句中的输出限制条件先对驱动表进行限制处理,再将限制后的驱动表与非驱动表进行连接,得到查询语句对应的查询结果,使得连接过程的计算量减小,减少了无效数据的计算,加快了数据查询的速度。的速度。的速度。