掌桥专利:专业的专利平台
掌桥专利
首页

连接消除方法、装置、设备、介质和计算机程序产品

文献发布时间:2024-04-18 20:01:23


连接消除方法、装置、设备、介质和计算机程序产品

技术领域

本发明涉及连接消除技术领域,尤其涉及一种连接消除方法、装置、设备、介质和计算机程序产品。

背景技术

在向数据库数据查询时,需要基于查询语句进行数据查询。

查询语句中包括有全连接句式,例如,查询语句中的全连接句式为“t1full joint2”,t1以及t2表示为两个数据表。在通过具有全连接句式的查询语句进行数据查询数据,需要对t1以及t2两个表进行扫描。

上述方式需要扫描t1以及t2两个表才可获得查询数据,数据查询的效率较低。

发明内容

本发明提供一种连接消除方法、装置、设备、介质和计算机程序产品,用以解决数据查询的效率较低的问题。

一方面,本发明提供一种连接消除方法,包括:

获取初始查询语句,所述初始查询语句包括全连接句式,所述全连接句式用于指示第一数据表全连接第二数据表;

在所述初始查询语句包含去重类型的查询块时,将所述初始查询语句中的全接连句式以及所述全连接句式对应的条件句式,替换为所述第一数据表对应的标识,得到目标查询语句;

根据所述目标查询语句进行数据查询。

在一实施例中,所述将所述初始查询语句中的全接连句式以及所述全连接句式对应的条件句式,替换为所述第一数据表对应的标识的步骤包括:

确定所述初始查询语句是否包括目标条件句式,所述目标条件句式用于指示所述第一数据表的主键列不为空值;

在所述初始查询语句包括目标条件句式时,将所述初始查询语句中的全接连句式以及所述全连接句式对应的条件句式,替换为所述第一数据表对应的标识。

在一实施例中,所述获取初始查询语句的步骤之后,还包括:

在所述初始查询语句中未包含去重类型的查询块时,确定所述初始查询语句中是否指示所述第一数据表的主键列与第二数据表的外键列相等;

在所述主键列与所述外键列相等时,将所述初始查询语句中的全接连句式以及所述全连接句式对应的条件句式,替换为所述第一数据表对应的标识。

在一实施例中,所述将所述初始查询语句中的全接连句式以及所述全连接句式对应的条件句式,替换为所述第一数据表对应的标识的步骤包括:

在所述初始查询语句中,确定所述第二数据表的数据是否被引用;

在确定所述第二数据表的数据未被引用时,将所述初始查询语句中的全接连句式以及所述全连接句式对应的条件句式,替换为所述第一数据表对应的标识。

在一实施例中,所述在所述初始查询语句中,确定所述第二数据表的数据是否被引用的步骤包括:

在所述初始查询语句的各个第一条件句式中确定第二条件句式,所述第二条件句式是除所述全连接句式对应的条件句式之外的第一条件句式;

确定各个所述第二条件句式是否包含所述第二数据表的外键列;

在各个所述第二条件句式中未包含所述外键列时,确定所述第二数据表的数据未被引用。

在一实施例中,所述将所述初始查询语句中的全接连句式以及所述全连接句式对应的条件句式,替换为所述第一数据表对应的标识的步骤包括:

在所述全连接句式对应的条件句式指示所述全连接句式为真,和/或所述全连接句式对应的条件句式指示所述第一数据表的主键列与所述第二数据表的外键列相等时,将所述初始查询语句中的全接连句式以及所述全连接句式对应的条件句式,替换为所述第一数据表对应的标识。

另一方面,本发明还提供一种连接消除装置,包括:

获取模块,用于获取初始查询语句,所述初始查询语句包括全连接句式,所述全连接句式用于指示第一数据表全连接第二数据表;

处理模块,用于在所述初始查询语句包含去重类型的查询块时,将所述初始查询语句中的全接连句式以及所述全连接句式对应的条件句式,替换为所述第一数据表对应的标识,得到目标查询语句;

查询模块,用于根据所述目标查询语句进行数据查询。

另一方面,本发明还提供一种连接消除设备,包括:存储器和处理器;

所述存储器存储计算机执行指令;

所述处理器执行存储器存储的计算机执行指令,使得连接消除设备执行如上所述的连接消除方法。

另一方面,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上所述的连接消除方法。

另一方面,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的连接消除方法。

本发明提供的连接消除方法、装置、设备、介质和计算机程序产品,获取包括全接连句式的初始查询语句,并在初始查询语句块包括去重类型的查询块时,将初始查询语句中的全连接句式以及对应的条件句式替换为第一数据表对应的标识得到目标查询语句,再基于目标查询语句进行数据查询。本发明中,当查询语句中包括有全接连句式以及去重类型的查询块时,将查询语句中的全连接句式以及全连接句式对应的条件句式替换为第一数据表的标识得到目标查询语句,使得在通过目标查询语句进行数据查询时,仅需扫描第一数据表即可得到查询数据,而无需扫描第一数据表以及第二数据表,节省了扫描时间,提高了数据查询效率。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为本发明连接消除方法的一场景示意图;

图2为本发明连接消除方法第一实施例的流程示意图;

图3为本发明连接消除方法第二实施例的流程示意图;

图4为本发明连接消除方法第三实施例的流程示意图;

图5为本发明连接消除方法第四实施例的流程示意图;

图6为本发明连接消除装置的功能模块示意图;

图7为本发明连接消除设备的硬件结构示意图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在向数据库数据查询时,需要基于查询语句进行数据查询。

查询语句中包括有全连接句式,例如,查询语句中的全连接句式为“t1full joint2”,t1以及t2表示为两个数据表。在通过具有全连接句式的查询语句进行数据查询数据,需要对t1以及t2两个表进行扫描。

本专利发明人发现,现有的数据查询,需要扫描t1以及t2两个表才可获得查询数据,数据查询的效率较低。

本专利发明人因此想到,当查询语句中包括有全接连句式以及去重类型的查询块时,将查询语句中的全连接句式以及全连接句式对应的条件句式替换为第一数据表的标识得到目标查询语句,使得在通过目标查询语句进行数据查询时,仅需扫描第一数据表即可得到查询数据,而无需扫描第一数据表以及第二数据表,节省了扫描时间,提高了数据查询效率。

参照图1,图1为连接消除方法的一应用场景示意图。如图1所示,连接消除装置100获取包括全连接句式的初始查询语句,当初始查询语句中包括去重类型的查询块时,在初始查询语句中将全连接句式以及全连接句式对应的条件句式替换为第一数据表的标识,得到目标查询语句,再通过目标查询语句在数据库200中进行数据查询。

下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。

参照图2,图2为本发明连接消除方法的第一实施例,连接消除方法包括以下步骤:

步骤S201,获取初始查询语句,初始查询语句包括全连接句式,全连接句式用于指示第一数据表全连接第二数据表。

在本实施例中,执行主体为连接消除装置,为了便于描述,以下采用装置指代连接消除装置。装置可以是数据库,还可以是任意具备连接消除功能的实体设备或虚拟设备。

装置获取初始查询语句,初始查询语句中包括全连接句式,全连接句式用于指示第一数据表全连接第二数据表。示例性的,全连接句式为:t1 full join t2,t1为第一数据表,且t为内表,t2为第二数据表,且t2作为外表,full join为全连接。

步骤S202,在初始查询语句包含去重类型的查询块时,将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识,得到目标查询语句。

在本实施例中,若需要消除全连接,则初始查询语句需要满足去重性质,也即需要判断初始查询语句中是否包括去重类型的查询块。

示例性的,去重类型的查询块包括:

1、初始查询语句中带有DISTINCT操作符的查询块;

2、初始查询语句中带有distinct、aggregate、function的查询块,如MIN()、MAX()、SUM(DISTINCT)、COUNT(DISTINCT)、AGGREGATE(DISTINCT);

3、初始查询语句中带有Group-By子句,且GROUP-BY子句汇总的所有项都在select语句中,查询语句为:select t1.a from t1 full join t2 on true where t1.a is notnull group by t1.a;select语句即为select t1.a from t1 where t1.a is not nullgroup by t1.a;

4、初始查询语句中带有UNION、INTERSECT、MINUS的查询块。

当初始查询语句中包括有上述中任意的去重类型的查询块时,则可确定初始查询语句满足全连接消除的条件。对此,装置将初始查询语句中的全连接句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识,即可得到目标查询语句。

示例性的,初始查询语句为:Select distinct t1.*from t1 full join t2 ontrue where t1.a is not null,全连接句式为:t1 full join t2;全连接句式对应的条件句式为:on true,装置将“t1 full join t2 on true”替换为第一数据表的标识“t1”,也即目标查询语句为:Select distinct t1.*from t1 where t1.a is not null。

步骤S203,根据目标查询语句进行数据查询。

在获得目标查询语句后,装置则可基于目标查询语句进行数据查询。在当采用初始查询语句进行数据查询时,需要扫描t1以及t2两个表,而采用目标查询语句进行数据查询时,仅需要扫描t1表,且采用目标查询语句以及初始查询语句进行数据查询得到的数据相同,因而,本实施例仅需扫描一个表即可得到查询数据,提高了数据查询效率,且提高了数据库的查询性能。

在本实施例中,获取包括全接连句式的初始查询语句,并在初始查询语句块包括去重类型的查询块时,将初始查询语句中的全连接句式以及对应的条件句式替换为第一数据表对应的标识得到目标查询语句,再基于目标查询语句进行数据查询。本实施例中,当查询语句中包括有全接连句式以及去重类型的查询块时,将查询语句中的全连接句式以及全连接句式对应的条件句式替换为第一数据表的标识得到目标查询语句,使得在通过目标查询语句进行数据查询时,仅需扫描第一数据表即可得到查询数据,而无需扫描第一数据表以及第二数据表,节省了扫描时间,提高了数据查询效率。

参照图3,图3为本发明连接消除方法第二实施例,基于第一实施例,步骤S202包括:

步骤S301,确定初始查询语句是否包括目标条件句式,目标条件句式用于指示第一数据表的主键列不为空值。

步骤S302,在初始查询语句包括目标条件句式时,将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识。

在本实施例中,full join保留了内表(第一数据表)以及外表(第二数据表)的所有数据,使得内表以及外表的数据不会丢失。全连接所保留的数据作为保留表。在对内表以及外表进行全连接时,内表或外表不存在对应的数据时,会在保留表中补上null值(空值)。在进行数据查询时,需要保证获取的数据不是null,因此包括全连接句式的初始查询语句中需要具备目标条件句式,目标条件句式用于指示第一数据表的主键列不为空值。示例性的,初始查询语句为:Select distinct t1.*from t1 full join t2 on true where t1.ais not null,目标条件句式为where的过滤条件,具体为:where t1.a is not null,t1.a为主键列。

对此,装置确定初始查询语句中是否包括目标条件句式,若初始查询数据中包括有目标条件句式时,则将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识。

在本实施例中,在当初始查询语句包括指示第一数据表的主键列不为空的句式时,则对初始查询语句中的全连接句式进行修改,使得数据查询时仅需扫描一个数据表。

参照图4,图4为本发明连接消除方法第三实施例,基于第一或第二实施例,步骤S201之后,还包括:

步骤S401,在初始查询语句中未包含去重类型的查询块时,确定初始查询语句中是否指示第一数据表的主键列与第二数据表的外键列相等;

步骤S402,在主键列与外键列相等时,将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识,得到目标查询语句。

步骤S403,根据目标查询语句进行数据查询。

在本实施例中,在当初始查询语句中未包括去重类型的查询块时,装置需要判断初始查询语句中是否定义了第一数据表的主键列与第二数据表的外键列之间的关系。

在当初始查询语句包括有主键列与外键列的连接关系时,且该连接关系指示主键列与外键列相等,则初始查询语句是可以消除全连接的,也即将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识。示例性的,若是初始查询语句包括t1.a=t2.a,则可对初始查询语句进行改写,t1.a为主键列,t2.a为外键列。此外,在当t1.a=t2.a时,还需要确定是否仅有t2.a具有唯一性,当t2.a具有唯一性则可对初始查询语句进行改写。

在本实施例中,当初始查询语句中未包括去重类型的查询块,但初始查询语句中包括了指示外键列与主键列相等的句式时,则可对初始查询语句进行全连接消除。

参照图5,图5为本发明连接消除方法第四实施例,基于第一至第三中任一实施例,步骤S202包括:

步骤S501,在初始查询语句中,确定第二数据表的数据是否被引用。

步骤S502,在确定第二数据表的数据未被引用时,将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识。

在本实施例中,在当初始查询语句中包括了去重类型的查询块时,装置需要确定初始查询语句的其他地方是否引用第二数据表的数据,第二数据表的数据例如为外键列。对此,装置在初始查询语句中,确定第二数据表的数据是否被引用,若第二数据表未被引用,则将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识,也即消除初始查询语句中的全连接。

在一示例中,第二数据表的数据例如为外键列,装置可以判断初始查询语句中是否包括外键列,若是未包括外键列,则可确定第二数据表的数据未被引用。

在另一示例中,初始查询语句中可能包括有外键列,但外键列所在的句式是限定主键列与外键列之间的关系,例如,t1.a=t2.a,此种句式不算外键列被引用。对此,装置在初始查询语句的各个第一条件句式中确定第二条件句式,第二条件句式是除全连接句式对应的条件句式之外的第一条件句式。装置再确定各个第二条件句式中是否包括第二数据表的外键列,若是各个第二条件句式中未包括外键列时,确定第二数据表的数据未被引用。

在本实施例中,若是第二数据表的数据未被引用,则可对初始查询语句进行全连接消除。

在一实施例中,在全连接句式对应的条件句式指示全连接句式为真,和/或全连接句式对应的条件句式指示第一数据表的主键列与第二数据表的外键列相等时,将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识。

在一示例中,初始查询语句为:Select distinct t1.*from t1 full join t2 ontrue where t1.a is not null,全连接句式对应的条件句式为on true,on true指示全连接句式为真,因此可将初始查询语句改写为:Select distinct t1.*from t1 where t1.ais not null。

在另一示例性中,初始查询语句为:Select distinct t1.*from t1 full joint2on t1.a=t2.a where t1.a is not null,全连接句式对应的条件句式为on t1.a=t2.a,on t1.a=t2.a指示主键列与外键列相等,因此可将初始查询语句Select distinctt1.*from t1 full join t2 on t1.a=t2.a where t1.a is not null改写为:Selectdistinct t1.*from t1 where t1.a is not null。

基于上述实施例可知,当初始查询语句中包括去重类型的查询块和/或初始查询语句中指示第一数据表的主键列与第二数据表的外键列相等时,可以对初始查询语句中的全连接进行消除。进一步的,在满足上述要求后,若第二数据表的数据未被引用、初始查询语句包括指示第一数据表的主键列不为空值的目标条件句式、全连接句式对应的条件句式指示全连接句式为真、和/或全连接句式对应的条件句式指示第一数据表的主键列与第二数据表的外键列相等,可以对初始查询语句中的全连接进行消除。

本发明还提供一种连接消除装置,参照图6,连接消除装置600包括:

获取模块610,用于获取初始查询语句,初始查询语句包括全连接句式,全连接句式用于指示第一数据表全连接第二数据表;

处理模块620,用于在初始查询语句包含去重类型的查询块时,将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识,得到目标查询语句;

查询模块630,用于根据目标查询语句进行数据查询。

在一实施例中,连接消除装置600具体用于:

确定初始查询语句是否包括目标条件句式,目标条件句式用于指示第一数据表的主键列不为空值;

在初始查询语句包括目标条件句式时,将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识。

在一实施例中,连接消除装置600具体用于:

在初始查询语句中未包含去重类型的查询块时,确定初始查询语句中是否指示第一数据表的主键列与第二数据表的外键列相等;

在主键列与外键列相等时,将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识。

在一实施例中,连接消除装置600具体用于:

在初始查询语句中,确定第二数据表的数据是否被引用;

在确定第二数据表的数据未被引用时,将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识。

在一实施例中,连接消除装置600具体用于:

在初始查询语句的各个第一条件句式中确定第二条件句式,第二条件句式是除全连接句式对应的条件句式之外的第一条件句式;

确定各个第二条件句式是否包含第二数据表的外键列;

在各个第二条件句式中未包含外键列时,确定第二数据表的数据未被引用。

在一实施例中,连接消除装置600具体用于:

在全连接句式对应的条件句式指示全连接句式为真,和/或全连接句式对应的条件句式指示第一数据表的主键列与第二数据表的外键列相等时,将初始查询语句中的全接连句式以及全连接句式对应的条件句式,替换为第一数据表对应的标识。

图7是根据一示例性实施例示出的一种连接消除设备的硬件结构示意图。

连接消除设备700可以包括:处理器701,例如CPU,存储器702、收发器703。本领域技术人员可以理解,图7中示出的结构并不构成对连接消除设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

处理器701可以调用存储器702内存储的计算机程序或计算机执行指令,以完成上述的连接消除方法的全部或部分步骤。

收发器703用于接收外部设备发送的信息以及向外部设备发送信息。

一种非临时性计算机可读存储介质,当该存储介质中的指令(计算机执行指令)由连接消除设备的处理器执行时,使得连接消除设备能够执行上述连接消除方法。

一种计算机程序产品,包括计算机程序,当该计算机程序由连接消除设备的处理器执行时,使得连接消除设备能够执行上述连接消除方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

相关技术
  • 非线性补偿方法、装置、存储介质及终端设备
  • 无功补偿控制方法、用户设备、存储介质及装置
  • 基于穿戴式设备的发烧提醒方法、装置、设备及存储介质
  • 基于车载设备的内容推荐方法、装置、设备和存储介质
  • 基于双控的存储设备数据同步方法、装置、设备及介质
  • 基于晶体振荡器的频率补偿方法、装置、设备及存储介质
  • 晶体振荡器频率补偿的方法、装置、电子设备和存储介质
技术分类

06120116553929