CN116108052A - 数据查询方法、装置、设备及存储介质 - Google Patents
数据查询方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116108052A CN116108052A CN202310115603.5A CN202310115603A CN116108052A CN 116108052 A CN116108052 A CN 116108052A CN 202310115603 A CN202310115603 A CN 202310115603A CN 116108052 A CN116108052 A CN 116108052A
- Authority
- CN
- China
- Prior art keywords
- query
- node
- key information
- matched
- query node
- 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.)
- Pending
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/242—Query formulation
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据查询方法、装置、设备及存储介质。该数据查询方法通过解析第一查询语句,生成与第一查询语句对应的查询树,然后基于第一查询节点和第二查询节点与第一集合中的第一关键信息的匹配关系,确定查询树中返回结果为空结果集的目标第二查询节点,并将该目标第二查询节点替换为空结果集节点,如此,在按照查询树执行到空结果集节点时,可以直接返回空结果集,无需再执行该目标第二查询节点以及目标第二查询节点之后的查询,如此减少了不必要的子查询,提高了数据查询的执行效率。
Description
技术领域
本申请涉及数据查询技术领域,尤其涉及一种数据查询方法、装置、设备及存储介质。
背景技术
近年来,随着移动互联网、大数据、人工智能等新应用场景以及新型技术的发展,数据库管理系统(Database Management System,DBMS)在规模和复杂性方面有了显著的增加,数据库的性能问题也越发凸显,其中,提高结构化查询语言(Structured QueryLanguage,SQL)的查询性能是数据库面临的重要课题。
空查询结果是数据查询过程中经常遇到的问题,在一些复杂而耗时的SQL查询语句中,通常有一部分子查询的结果是空结果集,这部分子查询的执行结果对整个查询的结果没有贡献,但通常在总的SQL执行时间中占有很大的比重,从而影响了SQL语句的执行效率。
申请内容
本申请实施例提供一种数据查询方法、装置、设备及存储介质,可以减少结果为空结果集的子查询,提高数据查询的执行效率。
第一方面,本申请实施例提供了一种数据查询方法,包括:
解析第一查询语句,生成与第一查询语句对应的查询树,查询树包含N个查询节点,N为大于1的整数;
按照由下至上的顺序,针对第一查询节点,查找第一集合,判断第一查询节点是否与第一集合中的第一关键信息匹配,第一查询节点为N个查询节点中的任一查询节点,第一集合用于存储返回结果为空结果集的目标子查询包含的第一关键信息,目标子查询为历史查询语句包含的子查询;
在第一查询节点与第一关键信息匹配的情况下,判断第二查询节点是否与第一关键信息匹配,第二查询节点为查询树中与第一查询节点相邻且位于第一查询节点的上一层级的查询节点;
在第二查询节点与第一关键信息不匹配的情况下,将与第一关键信息匹配的目标第二查询节替换为空结果集节点;
按照查询树进行数据查询,在执行到空结果集节点的情况下,返回空结果集。
第二方面,本申请实施例提供了一种数据查询装置,包括:解析模块、判断模块、替换模块和查询模块;
解析模块,用于解析第一查询语句,生成与第一查询语句对应的查询树,查询树包含N个查询节点,N为大于1的整数;
判断模块,用于按照由下至上的顺序,针对第一查询节点,查找第一集合,判断第一查询节点是否与第一集合中的第一关键信息匹配,第一查询节点为N个查询节点中的任一查询节点,第一集合用于存储返回结果为空结果集的目标子查询包含的第一关键信息,目标子查询为历史查询语句包含的子查询;
判断模块,还用于在第一查询节点与第一关键信息匹配的情况下,判断第二查询节点是否与第一关键信息匹配,第二查询节点为查询树中与第一查询节点相邻且位于第一查询节点的上一层级的查询节点;
替换模块,用于在第二查询节点与第一关键信息不匹配的情况下,将与第一关键信息匹配的目标第二查询节点替换为空结果集节点;
查询模块,用于按照查询树进行数据查询,在执行到空结果集节点的情况下,返回空结果集。
第三方面,本申请实施例提供了一种电子设备,包括:
处理器;
存储器,用于存储计算机程序指令;
当计算机程序指令被处理器执行时,实现如第一方面所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,当计算机程序指令被处理器执行时实现如第一方面所述的方法。
第五方面,本申请实施例提供了一种计算机程序产品,计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备执行如第一方面所述的方法。
本申请实施例通过解析第一查询语句,生成与第一查询语句对应的查询树,按照由下至上的顺序,针对第一查询节点,查找第一集合,判断第一查询节点是否与第一集合中的第一关键信息匹配,在第一查询节点与第一关键信息匹配的情况下,判断第二查询节点是否与第一关键信息匹配,在第二查询节点与第一关键信息不匹配的情况下,将与第一关键信息匹配的目标第二查询节替换为空结果集节点,按照查询树进行数据查询,在执行到空结果集节点的情况下,返回空结果集。即本申请实施例基于第一查询节点和第二查询节点与第一关键信息的匹配关系,确定查询树中返回结果为空结果集的目标第二查询节点,并将该目标第二查询节点替换为空结果集节点,如此,在按照查询树执行到空结果集节点时,可以直接返回空结果集,无需再执行该目标第二查询节点以及目标第二查询节点之后的查询,如此减少了不必要的子查询,提高了数据查询的执行效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据查询方法的流程图;
图2为本申请实施例提供的一种查询树的示意图;
图3为本申请实施例提供的一种优化后的查询树的示意图;
图4为本申请实施例提供的一种空结果集的查找和替换的过程示意图;
图5为本申请实施例提供的一种数据查询的过程示意图;
图6为本申请实施例提供的一种数据查询装置的结构图;
图7为本申请实施例提供的一种电子设备的结构图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本申请,并不被配置为限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
如上所述,空查询结果是数据查询过程中经常遇到的问题,在一些复杂而耗时的SQL查询语句中,通常有一部分子查询的结果是空结果集,这部分子查询的执行结果对整个查询的结果没有贡献,但通常在总的SQL执行时间中占有很大的比重,从而影响了SQL语句的执行效率。
目前,主要是通过抽样统计值进行基数预估的方式估算SQL查询语句对应的查询节点的返回值。这种估算方式通常是允许有误差的,即即使预估了返回值是零行,也会实际执行对应的子查询进行验证,依然无法有效的提高数据查询的执行效率。
为此,本申请实施例提供了一种数据查询方法、装置、设备及存储介质,可以减少结果为空结果集的子查询,提高数据查询的执行效率。
下面结合具体的实施例对本申请实施例提供的数据查询方法进行说明,图1为本申请实施例提供的一种数据查询方法的流程图。该方法可以应用于电子设备,电子设备可以包括但不限于手机、平板电脑、笔记本电脑、掌上电脑等。
如图1所示,该数据查询方法可以包括如下步骤:
S110、解析第一查询语句,生成与第一查询语句对应的查询树。
其中,查询树包含N个查询节点,N为大于1的整数。
S120、按照由下至上的顺序,针对第一查询节点,查找第一集合,判断第一查询节点是否与第一集合中的第一关键信息匹配。
其中,第一查询节点为N个查询节点中的任一查询节点,第一集合用于存储返回结果为空结果集的目标子查询包含的第一关键信息,目标子查询为历史查询语句包含的子查询。
S130、在第一查询节点与第一关键信息匹配的情况下,判断第二查询节点是否与第一关键信息匹配。
其中,第二查询节点为查询树中与第一查询节点相邻且位于第一查询节点的上一层级的查询节点。
S140、在第二查询节点与第一关键信息不匹配的情况下,将与第一关键信息匹配的目标第二查询节替换为空结果集节点。
S150、按照查询树进行数据查询,在执行到空结果集节点的情况下,返回空结果集。
本申请实施例通过解析第一查询语句,生成与第一查询语句对应的查询树,按照由下至上的顺序,针对第一查询节点,查找第一集合,判断第一查询节点是否与第一集合中的第一关键信息匹配,在第一查询节点与第一关键信息匹配的情况下,判断第二查询节点是否与第一关键信息匹配,在第二查询节点与第一关键信息不匹配的情况下,将与第一关键信息匹配的目标第二查询节替换为空结果集节点,按照查询树进行数据查询,在执行到空结果集节点的情况下,返回空结果集。即本申请实施例基于第一查询节点和第二查询节点与第一关键信息的匹配关系,确定查询树中返回结果为空结果集的目标第二查询节点,并将该目标第二查询节点替换为空结果集节点,如此,在按照查询树执行到空结果集节点时,可以直接返回空结果集,无需再执行该目标第二查询节点以及目标第二查询节点之后的查询,如此减少了不必要的子查询,提高了数据查询的执行效率。
下面对上述步骤进行详细说明,具体如下所示:
在S110中,第一查询语句例如可以是SQL语句。查询树为通过解析第一查询语句生成的树状结构,示例性地,该查询树为二叉树。
示例性地,第一查询语句为select*from(select*from L join R)x left join(select*from S join C on S.id=C.id)y on true,解析第一查询语句生成的查询树如图2所示,该查询树包括8个查询节点,由上到下分别为Left join(on true)、Join(on L.id=R.id)、L、R、Materialize、Join(on S.id=C.id)、S、C。L、R、S、C例如可以是数据表。
在S120中,第一查询节点可以是N个查询节点中的任意一个查询节点,例如在图2中,按照由下至上的顺序,第一查询节点可以是S、C、Join等。
子查询即第一查询语句中select对应的查询语句,以第一查询语句为select*from(select*from L join R)x left join(select*from S join C on S.id=C.id)yontrue为例,该语句包含三个select,即包含三个子查询,分别为select*from L join R、select*from S join C on S.id=C.id和select*from x left join y on true。
在进行数据查询时,每一个子查询可以返回一个结果,例如上述第一查询语句包含三个子查询,即可以返回三个结果,目标子查询即返回结果为空结果集的子查询。在本申请实施例中,目标子查询可以基于历史查询语句确定。
例如对于历史子查询select*from S join C on S.id=C.id,返回的结果为空结果集,则可以将select*from S join C on S.id=C.id记为目标子查询。实际应用时,目标子查询可以包括一个或多个。
第一集合用于存储返回结果为空结果集的目标子查询包含的第一关键信息。
第一关键信息可以是目标子查询中使返回结果为空结果集的信息,例如可以包括表信息和与表信息对应的查询条件。表信息例如可以是表名。示例性地,对于子查询select*from S join C on S.id=C.id,假定数据表S的记录数为0,则第一关键信息可以是S(表信息)、on S.id=C.id(与表信息S对应的查询条件)。
应当理解,当S的记录数为0时,可以推导出S join C也为0,相较于同时存储S、Sjoin C,本申请实施例仅将导致空结果集的最低级别的查询部分(S)作为第一关键信息,如此可以节省存储空间。
示例性地,在S110之前,可以通过如下方式确定第一集合:
获取历史查询语句中返回结果为空结果集的目标子查询;
确定目标子查询中使返回结果为空结果集的表信息和查询条件,记为第一关键信息;
存储第一关键信息,得到第一集合。
以目标子查询为select*from S join C on S.id=C.id为例,假定数据表S的记录数为0,使目标子查询返回的结果为空结果集,则可以将S以及on S.id=C.id分别作为表信息和查询条件,得到第一关键信息。本申请实施例仅存储使目标子查询的返回结果为空结果集的最低级部分(即S),如此可以节省存储空间,使得有限的存储空间,可以存储更多的第一关键信息,从而可以检测更多的新查询是否返回空结果集,提升新查询的执行效率。
存储第一关键信息,即可得到第一集合,为后续检测新的查询是否返回空结果集提供依据。例如在本申请实施例,可以通过第一集合,检测第一查询语句的子查询是否返回空结果,以提升第一查询语句的执行效率。
示例性地,可以通过如下方式确定目标子查询:
解析历史查询语句,得到M个子查询,M为大于1的整数;
执行各子查询,得到各子查询返回的结果;
在结果为空结果集的情况下,确定导致结果为空结果集的子查询,记为目标子查询。
历史查询语句的解析过程与第一查询语句的解析过程类似,具体可以参见上述实施例,为简洁描述,此处不再赘述。
针对每一个select语句,可以执行该select语句,得到返回结果,在返回结果为空结果集的情况下,可以确定导致返回结果为空结果集的子查询,记为目标子查询。
具体地,针对查询树的每一个查询节点,可以查找第一集合,判断该查询节点是否与第一集合中的第一关键信息匹配。
示例性地,上述S120可以包括以下步骤:
按照由下至上的顺序,针对第一查询节点,查找第一集合;
在第一查询节点对应的关键信息与第一集合中的第一关键信息相同的情况下,确定第一查询节点与第一集合中的第一关键信息匹配;
在第一查询节点对应的关键信息与第一集合中的第一关键信息不相同的情况下,确定第一查询节点与第一集合中的第一关键信息匹配。
第一查询节点的关键信息可以包括第一查询节点对应的表信息和查询条件,本申请实施例可以根据第一查询节点对应的表信息和查询条件,查找第一集合,当第一查询节点对应的表信息和查询条件与第一集合中存储的表信息和对应的查询条件相同时,可以确定第一查询节点与第一集合中的第一关键信息匹配,否则,确定第一查询节点与第一集合中的第一关键信息不匹配。其中,各查询节点对应的表信息和查询条件可以通过解析该查询节点对应的子查询得到。
例如对于查询节点(select*from A where id>10),对应的表信息为A,查询条件为A.id>10,则可以将A和A.id>10,与第一集合中存储的表信息和查询条件进行对比,如果第一集合中包含A和A.id>10,则认为该查询节点与第一集合中的第一关键信息匹配,如果表信息和查询条件至少有一个与第一集合中存储的表信息和查询条件不一致,则认为该查询节点与第一集合中的第一关键信息不匹配。
当第一查询节点与第一集合中的第一关键信息匹配时,表示第一查询节点返回的结果为空结果集,否则,第一查询节点返回的结果不是空结果集。
本申请实施例针对查询树的每一个查询节点查找第一集合,确定该查询节点是否与第一集合中的第一关键信息匹配,由于第一关键信息为空结果集对应的信息,因此通过比对,可以准确判断该查询节点是否可以返回空结果集,为提高数据查询的执行效率提供了基础。
在一些实施例中,在“存储第一关键信息,得到第一集合”之后,该数据查询方法还可以包括以下步骤:
在表信息发生改变的情况下,将对应的第一关键信息从第一集合中删除。
应当理解,当第一集合存储的表结构或表数据发生改变时,如果按照原子查询进行查询,返回的结果不一定为空,本申请实施例为了保证查询结果的有效性,在第一集合中某表的表结构或表数据发生改变时,可以将对应的表信息和查询条件从第一集合中删除。
在S130中,第二查询节点为查询树中与第一查询节点相邻,且位于第一查询节点的上一层级的查询节点,也可以称为第一查询节点的父节点。例如在图2中,第一查询节点为S,则第二查询节点为Join(on S.id=C.id)。
本申请实施例在第一查询节点与第一集合中的第一关键信息匹配时,表示第一查询节点的执行结果为空结果集,此时可以继续向上判断第一查询节点的父节点,也即第二查询节点是否与第一关键信息匹配,也即第二查询节点的执行结果是否空结果集,如果第一查询节点的父节点与第一关键信息匹配,则继续向上查找父节点,直至父节点与第一关键信息不匹配,其中,第二查询节点和第一查询节点的判断过程类似,具体可以参见上述实施例,为简洁描述,此处不再赘述。
在S140中,在第二查询节点与第一关键信息不匹配的情况下,表示第二查询节点的执行结果不为空结果集,此时可以将与第一关键信息匹配的目标第二查询节点替换为空结果集节点。本申请实施例对空结果集节点的表示形式不进行限定,例如可以表示为EmptyRseultSet。
目标第二查询节点可以是与第一关键信息匹配的第二查询节点中位于查询树的最上层的第二查询节点,以图2为例,假定S、Join(on S.id=C.id)、Materiallize的执行结果均为空结果集,则目标第二查询节点为Materiallize,此时可以将Materiallize替换为空结果集节点,得到图3所示的查询树,也即优化后的查询树,后续可以基于优化后的查询树生成最优的执行计划,得到查询结果。
示例性地,上述S140可以包括以下步骤:
在第二查询节点与第一关键信息不匹配的情况下,确定与第一关键信息匹配的第二查询节点中位于查询树的顶层的第二查询节点,记为目标第二查询节点;
将目标第二查询节点替换为空结果集节点。
这里的顶层即上述实施例所述的最上层,也即将与第一关键信息匹配的第二查询节点中位于查询树的最上层的第二查询节点记为目标第二查询节点,并将目标第二查询节点替换为空结果集节点,如此可以更新查询树,使得后续在基于更新后的查询树进行数据查询时,可以缩短查询时间,提高查询效率。
在S150中,按照由下至上的顺序遍历完查询树的各查询节点后,即可得到更新后的查询树,在基于更新后的查询树进行数据查询时,如果执行到空结果集节点,可以直接返回空结果集。
例如在图3中,当执行到Empty RseultSet节点时,可以直接返回空结果集,无需再执行Empty RseultSet节点,以及后续的子查询,如此避免了对空结果集的子查询的执行,缩短了查询时间,提高了数据库产品的响应时间,同时也减少了对电子设备的性能损耗。
在一些实施例中,该数据查询方式还可以包括以下步骤:
在第二查询节点与第一关键信息匹配的情况下,继续向上层查找第二查询节点,直至查找到的第二查询节点与第一关键信息不匹配。
示例性地,参考图4,假定查询节点7返回的结果为空结果集,则可以继续查找查询节点7的父节点,也即查询节点4,判断查询节点4返回的结果是否与空结果集,如果查询节点4返回的结果为空结果集,则继续向上查找查询节点4的父节点,也即查询节点2,如果查询节点2返回的结果不是空结果集,则停止查找,并将查询节点4替换为空结果集节点,如此,当由上到下执行按照查询树进行数据查询时,执行到查询节点4,即可直接返回空结果集,无需再执行查询节点4及其查询节点6和查询节点7,如此可以缩短查询时间,提高查询效率。
本申请实施例利用空结果集的特性来推导其父节点是否为空结果集,例如,如果表R中的记录数为空则可以推导出对R进行过滤的查询也为空结果集R和其他表的联合查询也为空结果集对R的分组,排序,去重等操作也为空结果集等。如此可以减少不必要的查询,提高执行效率。
下面通过一个示例对数据查询的过程进行说明,具体如下所示:
以“select*from S Join C on S.id=C.id and C.id>9”为例,如图5所示,通过解析该查询语句,可以得到包含三个查询节点(分别为A、C(C.id>9)和Join(on S.id=C.id))的二叉树,各查询节点对应的结果分别为rows=10000(S)、rows=0(C(C.id>9))、rows=0(Join),即查询节点C和Join返回的结果为空结果集,由于C返回的结果为空结果集,可以推导出Join返回的结果也为空结果集,此时可以仅存储C(C.id>9)以及对应的查询条件,得到第一集合,在下次执行该查询语句,或者执行新的查询语句时,可以基于查询节点,查找第一集合,以确定查询节点是否返回空结果集,例如仍以上述查询语句为例,在下次执行时,可以确定C(C.id>9)为空结果集,此时可以继续向上查找,并确定其父节点Join也为空结果集,由于Join为顶层节点,此时可以将Join替换为空结果集节点,如此在执行到该空结果集节点时,可以直接返回空结果集,也即无需执行该查询语句,可以直接返回空结果集,尤其是在表S和C的行数较多时,可以大大缩短S表,C表的扫描时间,连接时间和物化时间,提高查询效率。
本申请实施例通过记录和重用以前执行的空结果查询的结果,可以快速检测SQL查询中的空结果查询,而不需要实际执行,如此可以减少不必要的空结果查询的执行,提高查询效率,同时也可以减少数据库系统上的负载,提高系统性能。
基于相同的发明构思,本申请实施例还提供了一种数据查询装置,下面结合图6对本申请实施例提供的数据查询装置进行详细说明。
图6为本申请实施例提供的一种数据查询装置的结构图。
如图6所示,该数据查询装置可以包括:解析模块610、判断模块620、替换模块630和查询模块640;
解析模块610,用于解析第一查询语句,生成与第一查询语句对应的查询树,查询树包含N个查询节点,N为大于1的整数;
判断模块620,用于按照由下至上的顺序,针对第一查询节点,查找第一集合,判断第一查询节点是否与第一集合中的第一关键信息匹配,第一查询节点为N个查询节点中的任一查询节点,第一集合用于存储返回结果为空结果集的目标子查询包含的第一关键信息,目标子查询为历史查询语句包含的子查询;
判断模块620,还用于在第一查询节点与第一关键信息匹配的情况下,判断第二查询节点是否与第一关键信息匹配,第二查询节点为查询树中与第一查询节点相邻且位于第一查询节点的上一层级的查询节点;
替换模块630,用于在第二查询节点与第一关键信息不匹配的情况下,将与第一关键信息匹配的目标第二查询节点替换为空结果集节点;
查询模块640,用于按照查询树进行数据查询,在执行到空结果集节点的情况下,返回空结果集。
本申请实施例通过解析第一查询语句,生成与第一查询语句对应的查询树,按照由下至上的顺序,针对第一查询节点,查找第一集合,判断第一查询节点是否与第一集合中的第一关键信息匹配,在第一查询节点与第一关键信息匹配的情况下,判断第二查询节点是否与第一关键信息匹配,在第二查询节点与第一关键信息不匹配的情况下,将与第一关键信息匹配的目标第二查询节替换为空结果集节点,按照查询树进行数据查询,在执行到空结果集节点的情况下,返回空结果集。即本申请实施例基于第一查询节点和第二查询节点与第一关键信息的匹配关系,确定查询树中返回结果为空结果集的目标第二查询节点,并将该目标第二查询节点替换为空结果集节点,如此,在按照查询树执行到空结果集节点时,可以直接返回空结果集,无需再执行该目标第二查询节点以及目标第二查询节点之后的查询,如此减少了不必要的子查询,提高了数据查询的执行效率。
在一些实施例中,该数据查询装置还可以包括:
获取模块,用于在解析模块610解析第一查询语句,生成与第一查询语句对应的查询树之前,获取历史查询语句中返回结果为空结果集的目标子查询;
确定模块,用于确定目标子查询中使返回结果为空结果集的表信息和查询条件,记为第一关键信息;
存储模块,用于存储第一关键信息,得到第一集合。
在一些实施例中,获取模块,具体用于:
解析历史查询语句,得到M个子查询,M为大于1的整数;
执行各子查询,得到各子查询返回的结果;
在结果为空结果集的情况下,确定导致结果为空结果集的子查询,记为目标子查询。
在一些实施例中,判断模块620,具体用于:
按照由下至上的顺序,针对第一查询节点,查找第一集合;
在第一查询节点对应的关键信息与第一集合中的第一关键信息相同的情况下,确定第一查询节点与第一集合中的第一关键信息匹配;
在第一查询节点对应的关键信息与第一集合中的第一关键信息不相同的情况下,确定第一查询节点与第一集合中的第一关键信息匹配。
在一些实施例中,该数据查询装置还可以包括:
删除模块,用于在存储模块存储第一关键信息,得到第一集合之后,在表信息发生改变的情况下,将对应的第一关键信息从第一集合中删除。
在一些实施例中,替换模块630,具体用于:
在第二查询节点与第一关键信息不匹配的情况下,确定与第一关键信息匹配的第二查询节点中位于查询树的顶层的第二查询节点,记为目标第二查询节点;
将目标第二查询节点替换为空结果集节点。
在一些实施例中,判断模块620,还用于在第二查询节点与第一关键信息匹配的情况下,继续向上层查找第二查询节点,直至查找到的第二查询节点与第一关键信息不匹配。
图6所示装置中的各个模块具有实现图1-图5中各个步骤的功能并能达到相应的技术效果,为简洁描述,此处不再赘述。
基于相同的发明构思,本申请实施例还提供了一种电子设备,该电子设备例如可以是手机、平板电脑、笔记本电脑、掌上电脑等。下面结合图7对本申请实施例提供的电子设备进行详细说明。
如图7所示,该电子设备可以包括处理器710以及用于存储计算机程序指令的存储器720。
处理器710可以包括中央处理器(Central Processing Unit,CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器720可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器720可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在一个实例中,存储器720可以包括可移除或不可移除(或固定)的介质,或者存储器720是非易失性固态存储器。在一个实例中,存储器720可以是只读存储器(Read Only Memory,ROM)。在一个实例中,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器710通过读取并执行存储器720中存储的计算机程序指令,以实现图1-图5所示实施例中的方法,并达到图1-图5所示实施例执行其方法达到的相应技术效果,为简洁描述,在此不再赘述。
在一个示例中,该电子设备还可包括通信接口730和总线740。其中,如图7所示,处理器710、存储器720、通信接口730通过总线740连接并完成相互间的通信。
通信接口730,主要用于实现本申请实施例中各模块、装置和/或设备之间的通信。
总线740包括硬件、软件或两者,将电子设备的各部件彼此耦接在一起。举例来说而非限制,总线740可包括加速图形端(Accelerated Graphics Port,AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,EISA)总线、前端总线(Front Side Bus,FSB)、超传输(Hyper Transport,HT)互连、工业标准架构(IndustryStandard Architecture,ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线740可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
该电子设备在获解析第一查询语句,生成与第一查询语句对应的查询树后可以执行本申请实施例中的数据查询方法,从而实现结合图1-图5描述的数据查询方法以及图6描述的数据查询装置。
另外,结合上述实施例中的数据查询方法,本申请实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据查询方法。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RadioFrequency,RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本申请实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请实施例的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。
Claims (10)
1.一种数据查询方法,其特征在于,包括:
解析第一查询语句,生成与第一查询语句对应的查询树,所述查询树包含N个查询节点,N为大于1的整数;
按照由下至上的顺序,针对第一查询节点,查找第一集合,判断所述第一查询节点是否与所述第一集合中的第一关键信息匹配,所述第一查询节点为所述N个查询节点中的任一查询节点,所述第一集合用于存储返回结果为空结果集的目标子查询包含的第一关键信息,所述目标子查询为历史查询语句包含的子查询;
在所述第一查询节点与所述第一关键信息匹配的情况下,判断第二查询节点是否与所述第一关键信息匹配,所述第二查询节点为所述查询树中与所述第一查询节点相邻且位于所述第一查询节点的上一层级的查询节点;
在所述第二查询节点与所述第一关键信息不匹配的情况下,将与所述第一关键信息匹配的目标第二查询节替换为空结果集节点;
按照所述查询树进行数据查询,在执行到所述空结果集节点的情况下,返回空结果集。
2.根据权利要求1所述的方法,其特征在于,所述解析第一查询语句,生成与第一查询语句对应的查询树之前,所述方法还包括:
获取所述历史查询语句中返回结果为空结果集的目标子查询;
确定所述目标子查询中使返回结果为空结果集的表信息和查询条件,记为第一关键信息;
存储所述第一关键信息,得到第一集合。
3.根据权利要求2所述的方法,其特征在于,所述获取所述历史查询语句中返回结果为空结果集的目标子查询,包括:
解析所述历史查询语句,得到M个子查询,M为大于1的整数;
执行各所述子查询,得到各所述子查询返回的结果;
在所述结果为空结果集的情况下,确定导致所述结果为空结果集的子查询,记为目标子查询。
4.根据权利要求1所述的方法,其特征在于,所述按照由下至上的顺序,针对第一查询节点,查找第一集合,判断所述第一查询节点是否与所述第一集合中的第一关键信息匹配,包括:
按照由下至上的顺序,针对第一查询节点,查找第一集合;
在所述第一查询节点对应的关键信息与所述第一集合中的第一关键信息相同的情况下,确定所述第一查询节点与所述第一集合中的第一关键信息匹配;
在所述第一查询节点对应的关键信息与所述第一集合中的第一关键信息不相同的情况下,确定所述第一查询节点与所述第一集合中的第一关键信息匹配。
5.根据权利要求2所述的方法,其特征在于,所述存储所述第一关键信息,得到第一集合之后,所述方法还包括:
在所述表信息发生改变的情况下,将对应的第一关键信息从所述第一集合中删除。
6.根据权利要求1所述的方法,其特征在于,所述在所述第二查询节点与所述第一关键信息不匹配的情况下,将与所述第一关键信息匹配的目标第二查询节点替换为空结果集节点,包括:
在所述第二查询节点与所述第一关键信息不匹配的情况下,确定与所述第一关键信息匹配的第二查询节点中位于所述查询树的顶层的第二查询节点,记为目标第二查询节点;
将所述目标第二查询节点替换为空结果集节点。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
在所述第二查询节点与所述第一关键信息匹配的情况下,继续向上层查找第二查询节点,直至查找到的第二查询节点与所述第一关键信息不匹配。
8.一种数据查询装置,其特征在于,包括:解析模块、判断模块、替换模块和查询模块;
所述解析模块,用于解析第一查询语句,生成与第一查询语句对应的查询树,所述查询树包含N个查询节点,N为大于1的整数;
所述判断模块,用于按照由下至上的顺序,针对第一查询节点,查找第一集合,判断所述第一查询节点是否与所述第一集合中的第一关键信息匹配,所述第一查询节点为所述N个查询节点中的任一查询节点,所述第一集合用于存储返回结果为空结果集的目标子查询包含的第一关键信息,所述目标子查询为历史查询语句包含的子查询;
所述判断模块,还用于在所述第一查询节点与所述第一关键信息匹配的情况下,判断第二查询节点是否与所述第一关键信息匹配,所述第二查询节点为所述查询树中与所述第一查询节点相邻且位于所述第一查询节点的上一层级的查询节点;
所述替换模块,用于在所述第二查询节点与所述第一关键信息不匹配的情况下,将与所述第一关键信息匹配的目标第二查询节点替换为空结果集节点;
所述查询模块,用于按照所述查询树进行数据查询,在执行到所述空结果集节点的情况下,返回空结果集。
9.一种电子设备,其特征在于,包括:
处理器;
存储器,用于存储计算机程序指令;
当所述计算机程序指令被所述处理器执行时,实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,当所述计算机程序指令被处理器执行时,实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310115603.5A CN116108052A (zh) | 2023-02-01 | 2023-02-01 | 数据查询方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310115603.5A CN116108052A (zh) | 2023-02-01 | 2023-02-01 | 数据查询方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116108052A true CN116108052A (zh) | 2023-05-12 |
Family
ID=86253984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310115603.5A Pending CN116108052A (zh) | 2023-02-01 | 2023-02-01 | 数据查询方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116108052A (zh) |
-
2023
- 2023-02-01 CN CN202310115603.5A patent/CN116108052A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7711736B2 (en) | Detection of attributes in unstructured data | |
CN110659282B (zh) | 数据路由的构建方法、装置、计算机设备和存储介质 | |
US20220138240A1 (en) | Source code retrieval | |
CN107016018B (zh) | 数据库索引创建方法及装置 | |
CN105095381A (zh) | 新词识别方法和装置 | |
CN116542190A (zh) | 用户设计综合方法、装置、设备、介质及产品 | |
US20150066943A1 (en) | Database system and database management method | |
CN108804550B (zh) | 一种查询词拓展方法、装置以及电子设备 | |
CN114398394A (zh) | 数据血缘解析方法、装置、设备及存储介质 | |
CN114547380B (zh) | 数据遍历查询方法、装置、电子设备及可读存储介质 | |
CN116108052A (zh) | 数据查询方法、装置、设备及存储介质 | |
CN108536819B (zh) | 整型列与字符串比较的方法、装置、服务器及存储介质 | |
CN112965998B (zh) | 一种化合物数据库建立及检索方法及系统 | |
CN114090643A (zh) | 招聘信息推荐方法、装置、设备及存储介质 | |
CN110046180B (zh) | 一种用于定位相似实例的方法、装置和电子设备 | |
CN108416056B (zh) | 基于条件包含依赖的相关性学习方法、装置、设备及介质 | |
CN113568894A (zh) | 数据库的数据冗余处理方法、装置、电子设备及存储介质 | |
CN110674142A (zh) | 一种Oracle数据库索引优化方法 | |
CN117313111B (zh) | 一种基于汽车信息安全测试用例的标注与索引方法和系统 | |
CN117077598B (zh) | 一种基于Mini-batch梯度下降法的3D寄生参数的优化方法 | |
CN115878674A (zh) | 一种数据处理方法、装置、设备及计算机存储介质 | |
CN110569328B (zh) | 实体链接方法、电子装置及计算机设备 | |
CN114461605B (zh) | 内存多维数据库的事务数据多版本实现方法、装置及设备 | |
CN115794899A (zh) | 数据标准匹配方法、装置、设备、介质及产品 | |
CN116028521A (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 |