CN111309738B - 聚集结果的确定方法、装置、设备和存储介质 - Google Patents
聚集结果的确定方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN111309738B CN111309738B CN202010207457.5A CN202010207457A CN111309738B CN 111309738 B CN111309738 B CN 111309738B CN 202010207457 A CN202010207457 A CN 202010207457A CN 111309738 B CN111309738 B CN 111309738B
- Authority
- CN
- China
- Prior art keywords
- item
- function
- target
- aggregation
- external connection
- 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
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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
-
- 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
-
- 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
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
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)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明实施例公开了一种聚集结果的确定方法、装置、设备和存储介质。所述方法包括:在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息,其中,目标外连接函数为目标聚集函数的直接孩子且目标外连接函数的连接条件为等式;根据项值信息确定目标聚集函数的聚集结果。本发明实施例通过采用上述技术方案,在执行外连接函数的过程中同时完成聚集函数的计算,而无需首先计算得到目标外连接函数的连接结果,然后再对该连接结果执行聚集操作,能够简化聚集函数聚集结果的计算过程,减少计算过程中的数据运算量,从而,提高聚集函数聚集结果的计算速度,进而提高数据库的查询效率,减少用户的等待时间。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种聚集结果的确定方法、装置、设备和存储介质。
背景技术
关系型数据库多采用结构化语言(Structured Query Language,SQL)作为操作语言。
聚集函数和外连接函数是结构化查询语言中常见的两种函数,分别通过两个操作符来完成。现有技术在执行外连接函数和采用该外连接函数的连接结果作为聚集对象的聚集函数时,一般会首先对外连接函数的两连接项所属的表格执行外连接操作,然后再依据外连接得到的表格执行聚集函数,得到聚集函数的聚集结果。
但是,现有的执行方法的执行效率较低,使得数据库的查询效率较低,用户需要等待较长的时间。
发明内容
有鉴于此,本发明实施例提供一种聚集结果的确定方法、装置、设备和存储介质,以提高聚集函数的执行效率。
第一方面,本发明实施例提供了一种聚集结果的确定方法,包括:
在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息,其中,所述目标外连接函数为所述目标聚集函数的直接孩子且所述目标外连接函数的连接条件为等式;
根据所述项值信息确定所述目标聚集函数的聚集结果。
第二方面,本发明实施例提供了一种聚集结果的确定装置,包括:
信息获取模块,用于在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息,其中,所述目标外连接函数为所述目标聚集函数的直接孩子且所述目标外连接函数的连接条件为等式;
结果确定模块,用于根据所述项值信息确定所述目标聚集函数的聚集结果。
第三方面,本发明实施例提供了一种设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例所述的聚集结果的确定方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所述的聚集结果的确定方法。
在上述确定聚集结果的技术方案中,在执行到目标聚集函数对应的目标外连接函数时,获取该目标外连接函数的连接项的项值信息,并根据目标外连接函数的项值信息确定该目标聚集函数的聚集结果。本发明实施例通过采用上述技术方案,在执行外连接函数的过程中同时完成聚集函数的计算,而无需首先计算得到目标外连接函数的连接结果,然后再对该连接结果执行聚集操作,能够简化聚集函数聚集结果的计算过程,减少计算过程中的数据运算量,从而,提高聚集函数聚集结果的计算速度,进而提高数据库的查询效率,减少用户的等待时间。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明实施例一提供的一种聚集结果的确定方法的流程示意图;
图2为本发明实施例二提供的一种聚集结果的确定方法的流程示意图;
图3为本发明实施例三提供的一种聚集结果的确定装置的结构框图;
图4为本发明实施例四提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合
实施例一
本发明实施例一提供一种聚集结果的确定方法。该方法可以由聚集结果的确定装置执行,该装置可以由软件和/或硬件实现,一般可集成在计算机设备中,适用于确定SQL语句中以外连接函数为直接孩子的聚集函数的聚集结果的场景。图1是本发明实施例一提供的一种聚集结果的确定方法的流程示意图,如图1所示,所述方法包括:
S110、在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息,其中,所述目标外连接函数为所述目标聚集函数的直接孩子且所述目标外连接函数的连接条件为等式。
在本实施例中,针对包含目标聚集函数的SQL语句,可以依据SQL语句的执行计划依次执行SQL语句中的各函数,并在执行与目标聚集函数对应的目标外连接函数时,获取目标外连接函数的左连接项和右连接项的项值信息,即获取目标外连接函数左连接项的各左项值以及目标外连接函数右连接项的各右项值,作为目标外连接函数的连接项的项值信息,如确定目标外连接函数所需连接的左表和右表,并自左表中获取左连接项的取值,自右表中获取右连接项的取值。其中,目标外连接函数是自身为目标聚集函数的直接孩子且自身的连接条件为等式的外连接函数,其类型可以为左外连接函数、右外连接函数或全外连接函数。
S120、根据所述项值信息确定所述目标聚集函数的聚集结果。
在本实施例中,可以通过将左连接项的各项值与左连接项的各项值进行对比,得到目标函数的聚集结果。以目标聚集函数为全外连接函数、目标聚集函数需要求取目标外连接函数左右连接项中存在的相互匹配的项值对(即匹配项值对)的个数为例,可以针对左连接项的每个左项值,将右连接项的各右项值分别与该左项值进行对比,统计右连接项中存在的与给左项值相等的右项值的个数,作为该左项值的匹配个数,并在统计得到每个左项值的匹配个数后,计算左连接项各左项值的匹配个数之和,即可得到目标外连接函数左连接项和右连接项中存在的匹配项值对的个数,从而在目标外连接函数的执行过程中得到目标聚集函数的聚集结果。其中,目标外连接函数可以哈希外连接的方式实现,也可以以其他外连接(如索引外连接、嵌套外连接等)的方式实现,本实施例不对此进行限制。
本发明实施例一提供的聚集结果的确定方法,在执行到目标聚集函数对应的目标外连接函数时,获取该目标外连接函数的连接项的项值信息,并根据目标外连接函数的项值信息确定该目标聚集函数的聚集结果。本实施例通过采用上述技术方案,在执行外连接函数的过程中同时完成聚集函数的计算,而无需首先计算得到目标外连接函数的连接结果,然后再对该连接结果执行聚集操作,能够简化聚集函数聚集结果的计算过程,减少计算过程中的数据运算量,从而,提高聚集函数聚集结果的计算速度,进而提高数据库的查询效率,减少用户的等待时间。
实施例二
图2为本发明实施例二提供的一种聚集结果的确定方法的流程示意图,本实施例在上述实施例的基础上进行优化,进一步地,在所述在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息之前,还包括:确定SQL语句中包含目标聚集函数,其中,所述目标聚集函数为用于统计聚集对象的数量且孩子为非分组函数的求和函数或计数函数,所述聚集对象包括下述四项中的至少一项:所述目标外连接函数两连接项中的匹配项值对、所述目标外连接函数左连接项中存在的不与右连接项中的任一右项值相等且符合连接条件的非匹配左项值、所述目标外连接函数右连接项中存在的不与左连接项中的任一左项值相等且符合连接条件的非匹配右项值以及所述目标外连接函数基准连接项中不符合连接条件的非连接项值。
进一步地,所述根据所述项值信息确定所述目标聚集函数的聚集结果,包括:解析所述目标聚集函数的表达式,确定所述目标聚集函数的目标聚集对象;根据所述项值信息确定所述目标聚集对象的数量,以得到所述目标聚集函数的聚集结果。
相应的,如图2所示,本实施例提供的聚集结果的确定方法包括:
S210、确定SQL语句中包含目标聚集函数,其中,所述目标聚集函数为用于统计聚集对象的数量且孩子为非分组函数的求和函数或计数函数,所述聚集对象包括下述四项中的至少一项:所述目标外连接函数两连接项中的匹配项值对、所述目标外连接函数左连接项中存在的不与右连接项中的任一右项值相等且符合连接条件的非匹配左项值、所述目标外连接函数右连接项中存在的不与左连接项中的任一左项值相等且符合连接条件的非匹配右项值以及所述目标外连接函数基准连接项中不符合连接条件的非连接项值。
其中,匹配项值对可以理解为目标外连接函数左右连接项中相互匹配的项值对;非匹配左项值可以理解为目标外连接函数左连接项中存在的、不与右连接项中的任一右项值匹配且自身的值不为NULL的左项值;非匹配右项值可以理解为目标外连接函数右连接项中存在的、不与左连接项中任一左项值匹配且自身的值不为NULL的右项值;非连接项值可以理解为基准连接项中不符合连接条件的项值,即在非基准连接项中不存在匹配的项值且自身的值为NULL的项值。在此,基准连接项为与目标外连接函数的基准表对应的连接项,相应的,非基准连接项为与目标外连接函数的非基准表对应的连接项,即若目标外连接函数为左外连接函数,则其基准连接项为左连接项,非基准连接项为右连接项;若目标外连接函数为右外连接函数,则其基准连接项为右连接项,非基准连接项为左连接项;若目标外连接函数为全外连接函数,则可以依次选取左连接项和右连接项作为基准连接项,当选取左连接项作为基准连接项时,非基准连接项为右连接项,当选取右连接项作为基准连接项时,非基准连接项为左连接项。
在本实施例中,目标聚集函数可以理解为直接孩子包括一连接条件为等式的外连接函数且不包括分组函数,并且,用于统计该外连接函数两连接项中的匹配项值对、非匹配左项值、非匹配右项值和/或非连接项值的个数的求和函数或计数函数,即SQL语句中的聚集函数需同时满足下述条件才能将其称之为目标聚集函数:聚集函数为求和函数(即sum函数)或计数函数(即count函数);聚集函数的孩子中不存在分组函数(即不存在group by函数),亦即聚集函数的聚集对象并非分组函数的分组结果;聚集函数的孩子中包含连接条件为等式的外连接函数,如连接条件为等式的全外连接函数、左外连接函数或右外连接函数;并且,聚集函数用于统计该外连接函数两连接项的匹配项值对、非匹配左项值、非匹配右项值和/或非连接项值的数量,即聚集函数的聚集对象包括且仅包括该外连接函数两连接项的匹配项值对、非匹配左项值、非匹配右项值和/或非连接项值。
示例性的,可以在接收到需要执行的SQL语句,判断该SQL语句中是否包含目标聚集函数,若是,则采用本实施例所提供的聚集结果的确定方法执行该SQL语句中的目标聚集函数以及该目标聚集函数对应的目标外连接函数,得到目标聚集函数的聚集结果;若否,则可以依据现有的方法执行该SQL语句中的各函数。例如,在接受到需要执行的SQL语句后,判断该SQL语句中是否包含聚集函数,若不包含,则依据现有的方法执行该SQL语句中的各函数;若包含,则进一步判断该聚集函数是否为目标聚集函数,若是,则采用本实施例所提供的聚集结果的确定方法执行该目标聚集函数以及该目标聚集函数对应的目标外连接函数;若否,则依据现有的方法执行该SQL语句中的各函数。
在本实施例中,某一聚集函数是否为目标聚集函数判断方法可以根据需要确定,例如,可以首先判断聚集函数的孩子中是否包含分组函数,若包含分组函数,则确定该聚集函数不为目标聚集函数;若不包含分组函数,则继续判断该聚集函数是否为求和函数或计数函数,若不为求和函数或计数函数,则确定该聚集函数不为目标聚集函数;若为求和函数或计数函数,则进一步判断该聚集函数的表达式是否为“如果满足条件,则1,否则0(即then1else 0)”的表达方式,若不是,则确定该聚集函数不是目标聚集函数;若是,则继续判断该聚集函数的表达式是否包含采用且(即and)连接的左表达式和右表达式,且其左表达式为is not null或is null,其右表达式为is not null或is null,若不包含满足上述条件的左表达式和/或右表达式,则确定该聚集函数不是目标聚集函数;若包含满足上述条件的左表达式和右表达式,则进一步判断聚集函数的直接孩子中是否包含表达式为等式的外连接函数,若不包含,则确定该聚集函数不是目标聚集函数;若包含,则继续判断该聚集函数左表达式和右表达式中的聚集项是否为该外连接函数的连接项,若是,则确定该聚集函数为目标聚集函数;若否,则确定该聚集函数不是目标聚集函数。
S220、在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息,其中,所述目标外连接函数为所述目标聚集函数的直接孩子且所述目标外连接函数的连接条件为等式。
S230、解析所述目标聚集函数的表达式,确定所述目标聚集函数的目标聚集对象。
具体的,获取目标聚集函数的表达式,对该表达式进行解析,确定该目标聚集函数的目标聚集对象,即确定目标聚集函数是否需要求取目标连接函数的左右连接项中匹配项值对的数量、非匹配左项值的数量、非匹配右项值的数量和/或非连接项值的数量,并将匹配项值对、非匹配左项值、非匹配右项值以及非连接项值四项中目标聚集函数需要求取其数量的项确定为目标聚集对象。其中,目标聚集对象可以理解为目标聚集函数需要求取其个数的聚集对象。
在本实施例中,可以在计算目标聚集函数的聚集对象的个数之前或之后确定目标聚集函数的目标聚集对象,即在确定目标聚集函数的聚集结果时,可以首先确定目标聚集函数的目标聚集对象,然后再根据目标连接函数的连接项的项值信息确定目标聚集对象的个数,从而得到目标聚集函数的聚集结果;也可以首先根据目标连接函数的连接项的项值信息确定各聚集对象(即匹配项值对、非匹配左项值、非匹配右项值以及非连接项值)的个数,然后再基于目标聚集函数,确定聚集对象中的目标聚集对象,并基于目标聚集对象的个数生成目标聚集函数的聚集结果,本实施例不对此进行限制。为了进一步减少聚集结果确定过程中所需的计算量,优选可以首先确定目标聚集函数的目标聚集对象,然后再根据目标连接函数的连接项的项值信息确定目标聚集函数的聚集结果,本实施例以此种情况为例进行说明。
S240、根据所述项值信息确定所述目标聚集对象的数量,以得到所述目标聚集函数的聚集结果。
具体的,可以将外连接函数的基准连接项中的每一个基准项值与另一连接项的各项值进行比较,确定每一个基准项值在另一连接项中是否存在匹配(即相等)的项值,并在存在匹配项值时,进一步确定匹配项值的个数,以及,在不存在匹配项值时,进一步确定该基准项值是否为NULL,基于基准项中每一个基准项值的匹配项值的个数或是否为NULL的判定结果确定目标聚集对象的数量,从而得到目标聚集函数的聚集结果。
在本步骤的一个具体实施方式中,当所述目标外连接函数为左外连接函数时,所述根据所述项值信息确定所述目标聚集对象的数量可以优化为:根据所述项值信息,统计左连接项中的左项值与右连接项中的右项值相等的总次数作为所述匹配项值对的第一数量,统计左连接项中存在的不与右连接项中的任一右项值相等且项值不为NULL值的第二左连接项的数量作为所述非匹配左项值的第二数量,统计左连接项中存在的项值为NULL值的第三左项值的数量作为所述非连接项值的第四数量,并将所述非匹配右项值的第三数量确定为零。
在本步骤的另一个具体实施方式中,当所述目标外连接函数为右外连接函数时,所述根据所述项值信息确定所述目标聚集对象数量可以优化为:根据所述项值信息,统计右连接项中的右项值与左连接项中的左项值相等的总次数作为所述匹配项值对的第一数量,统计右连接项中存在的不与左连接项中的任一左项值相等且项值不为NULL值的第二右项值的数量作为所述非匹配右项值的第三数量,统计右连接项中存在的项值为NULL值的第三右项值的数量作为所述非连接项值的第四数量,并将所述非匹配左项值的第二数量确定为零。
在本步骤的第三个具体实施方式中,当所述目标外连接函数为全外连接函数时,所述根据所述项值信息确定所述目标聚集对象数量可以优选为:根据所述项值信息,统计任一连接项中的项值与另一连接项中的项值相等的总次数作为所述匹配项值对的第一数量,统计左连接项中存在的不与右连接项中的任一右项值相等且项值不为NULL值的第二左项值的数量作为所述非匹配左项值的第二数量,统计右连接项中存在的不与左连接项中的任一左连接项相等且项值不为NULL值的第二右项值的数量作为所述非匹配右项值的第三数量,并计算左连接项中存在的项值为NULL值的第三左项值的数量与右连接项中存在的项值为NULL值的第三右项值的数量之和作为所述非连接项值的第四数量。
举例而言,假设以LR(表示左项值与右项值相等,且均非NULL)代表匹配项值对的数量,以LN(表示连接后左项值在右连接项中不存在项值相等的右项值,且左项值非NULL,右项值为NULL)代表非匹配左项值的数量,以NR(表示右项值在左连接项中不存在项值相等的左项值,且右项值非NULL,左项值为NULL)代表非匹配右项值的数量,以NN(表示连接后左项值与右项值均为NULL)代表非连接项值的数量,则在确定目标聚集函数的聚集结果时,可以首先将LR、LN、NR、NN初始化为0,然后采用如下方式确定目标聚集函数的聚集结果:
针对目标聚集函数为左外连接函数的情况,按照一定的顺序依次将左连接项中的每一个左项值与右连接项中的各右项值进行比较,如果左项值与某一右项值匹配,则LR++;如果左项值在右连接项中不存在匹配的右项值,且左项值非NULL,则LN++;如果左项值在右连接项中不存在匹配的右项值,且左项值为NULL,则NN++;并且,NR值恒为零,由此,比较完毕后即可得到目标聚集函数的聚集结果。
针对目标聚集函数为右外连接函数的情况,按照一定的顺序依次将右连接项中的每一个右项值与左连接项中的各左项值进行比较,如果右项值与某一左项值匹配,则LR++;如果右项值在左连接项中不存在匹配的左项值,且右项值非NULL,则NR++;如果右项值在左连接项中不存在匹配的左项值,且右项值为NULL,则NN++;并且,LN恒为零,由此,比较完毕后即可得到目标聚集函数的聚集结果。
当目标聚集函数为全外连接函数时,按照一定的顺序依次将左连接项的各项值与右连接项的各项值进行比较,如果左项值与右项值匹配,则LR++。针对每一个左项值,如果左项值在右连接项中不存在匹配的右项值,且左项值非NULL,则LN++;如果左项值在右连接项中不存在匹配的右项值,且左项值为NULL,则NN++。针对每一个右项值,如果右项值在左连接项中不存在匹配的左项值,且右项值非NULL,则NR++;如果右项值在左连接项中不存在匹配的左项值,且右项值为NULL,则NN++。由此,即可得到目标聚集函数的聚集结果。
需要说明的是,上述具体实施方式中虽然均对四种聚集对象(即匹配项值对、非匹配左项值、非匹配右项值以及非连接项值)的数量进行了统计,然而,本领域技术人员可以理解的是,上述具体实施方式中同时统计四种聚集对象的数量仅是为了给出每一种聚集对象的确定方式,而并非对目标聚集函数计算的聚集对象的种类进行限定。在具体应用中,当目标聚集函数所求取的目标聚集对象并未同时包含上述四种聚集对象时,可以仅统计目标聚集对象的数量,而无需统计对非目标聚集对象的数量进行统计,如若目标聚集函数仅需求取匹配项值对和非匹配左项值的数量,则可以在外连接过程中仅对匹配项值对和非匹配左项值的数量,而无需再对非匹配右项值和非连接项值的数量进行统计。
以下,以SQL语句为SELECT sum(case when A_ID is not null and B_ID is notnull then 1else 0end)A_B,sum(case when A_ID is not null and B_ID is null then1else 0end)A_N,sum(case when A_ID is null and B_ID is not null then 1else0end)N_B FROM A FULL JOIN B ON A_ID=B_ID,表A中A_ID列的数据分别为1、2、3、4、4、5、6、NULL和NULL,表B中B_ID列的数据分别为11、2、33、4、4、4、NULL、5和55,且采用哈希外连接的方式实现上述SQL语句中的目标外连接函数为例,本实施例所根据目标外连接函数的连接项的项值信息确定目标聚集函数的聚集结果的过程可以描述为:
a)解析上述SQL语句中目标聚集函数(即sum函数)的表达式,确定目标聚集函数为全外连接函数,且目标聚集函数需要求取匹配项值对的数量LR(亦即上述SQL语句中的A_B)、非匹配左项值的数量LN(亦即上述SQL语句中的A_N)以及非匹配右项值的数量NR(亦即上述SQL语句中的N_B)。
b)将LR、LN和NR的值初始化为0。
c)创建哈希表,根据哈希函数(假设为F(x)=(2x+1)%11)将左连接项A_ID的数据映射到哈希表中,并记录各数据的个数Q,将哈希表中的各数据初始化为不匹配(即是否匹配项的值为0),如表1所示。
表1
d)接收右连接项B_ID的数据(假设接收顺序为:11,2,33,4,4,4,NULL,5,55),依次比较所接收到的数据在哈希表中是否存在匹配的数据并确定所接收到的值是否为NULL,从而对LR和NR的值进行更新,更新过程如下:
接收到数据11时,比较发现数据11不与哈希表中的任一数据匹配且不为NULL,将NR更新为:NR++=0+1=1;
接收到数据2时,比较发现数据2在哈希表中存在匹配值2且匹配值2的个数Q2为1,将LR更新为:LR+Q2=0+1=1,并在将哈希表中的数据2标记为匹配(即数据2是否匹配项的值由0改为1);
接收到数据33时,比较发现数据33不与哈希表中的任一数据匹配且不为NULL,将NR更新为:NR++=1+1=2;
接收到第一个数据4时,比较发现数据4在哈希表中存在匹配值4且匹配值4的个数Q4为2,将LR更新为:LR+Q4=1+2=3,并将哈希表中的数据4标记为匹配;
接收到第二个数据4时,比较发现数据4在哈希表中存在匹配值4且匹配值4的个数Q4为2,将LR更新为:LR+Q4=3+2=5,由于哈希表中的数据4已被标记为匹配,因此,无需再次进行标记;
接收到第三个数据4时,比较发现数据4在哈希表中存在匹配值4且匹配值4的个数Q4为2,将LR更新为:LR+Q4=5+2=7,由于哈希表中的数据4已被标记为匹配,因此,无需再次进行标记;
接收到数据NULL时,比较发现数据NULL在哈希表中不存在匹配值(因为NULL不与任意值匹配)且为NULL,仅对非连接项的数量NN造成影响,但由于目标聚集对象不包含非连接项,因此,无需执行更新操作;
当接收到数据5时,比较发现数据5在哈希表中存在匹配值5且匹配值5的个数Q5为1,将LR更新为:LR+Q5=7+1=8,并将哈希表中的数据5标记为匹配;
当接收到数据55时,比较发现数据33不与哈希表中的任一数据匹配且不为NULL,将NR更新为:NR++=2+1=3。
标记后的哈希表如表2所示。
表2
e)遍历哈希表,确定哈希表中未匹配过的数据(即是否匹配项的值为0的数据),由于未匹配过的数据仅会对非匹配左项值的数量LN或非连接项的数据NN造成影响,而目标聚集函数无需计算NN,故,进一步基于哈希表中未匹配过的数据对LN进行更新,更新过程如下:
针对未匹配过的数据NULL,由于数据NULL在右连接项B_ID中不存在匹配的数据且为NULL,仅对NN造成影响,但由于目标聚集对象不包含非连接项,因此,无需执行更新操作;
针对未匹配过的数据6,由于数据6不为NULL且数据6的个数Q6为1,将LN更新为:LN+Q6=0+1=1;
针对未匹配过的数据1,由于数据1不为NULL且数据1的个数Q1为1,将LN更新为:LN+Q1=1+1=2;
针对未匹配过的数据3,由于数据3不为NULL且数据3的个数Q3为1,将LN更新为:LN+Q3=2+1=3。
由此,LR=8,LN=3,NR=3。由于LR=A_B,LN=A_N,NR=N_B,从而,得到目标聚集函数的聚集结果为:A_B=8,A_N=3,N_B=3。
未采用本发明实施例所提供的聚集函数的确定方法时,上述SQL语句的执行计划为:
1#NSET2:[0,1,4]
2#PRJT2:[0,1,4];exp_num(3),is_atom(FALSE)
3#AAGR2:[0,1,4];grp_num(0),sfun_num(3)slave_empty(0)
4#PRJT2:[0,33,4];exp_num(3),is_atom(FALSE)
5#HASH FULL JOIN2:[0,33,4];key_num(1),KEY((A.A_ID=B.B_ID))
6#CSCN2:[0,10,4];INDEX33555527(A)
7#CSCN2:[0,10,4];INDEX33555528(B)
采用本发明实施例所提供的聚集函数的确定方法后,上述SQL语句的执行计划可以简化为:
1#NSET2:[0,1,4]
2#PRJT2:[0,1,4];exp_num(3),is_atom(FALSE)
3#HASH FULL JOIN2:[0,10,4];key_num(1);col_num(3);mix_aagr(3);mix_dist(0)
4#CSCN2:[0,10,4];INDEX33555663(A)
5#CSCN2:[0,10,4];INDEX33555664(B)
对比两执行计划可以看出,本发明实施例所提用的聚集结果的确定方法,能够简化SQL语句的执行过程,从而提高数据的查询效率,减少用户的等待时间。
本发明实施例二提供的聚集结果的确定方法,在接收到SQL语句时,判断SQL语句中是否包含目标聚集函数,如果确定SQL语句中包含目标聚集函数,则在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息,并解析目标聚集函数的表达式,从而确定目标聚集函数的目标聚集对象,进而根据目标外连接函数的连接项的项值信息确定目标聚集对象的数量,得到目标聚集函数的聚集结果。本实施例通过采用上述技术方案,首先对SQL语句中是否包含目标聚集函数进行判断,并在计算过程中仅统计目标聚集对象的数量,能够进一步减少聚集函数的聚集结果的计算过程,从而,进一步提高数据库的查询效率。
实施例三
本发明实施例三提供一种聚集结果的确定装置。该装置可以由软件和/或硬件实现,一般可集成在计算机设备中,可通过执行聚集结果的确定方法确定聚集函数的聚集结果,适用于确定SQL语句中以外连接函数为直接孩子的聚集函数的聚集结果的场景。图3为本发明实施例三提供的聚集结果的确定装置的结构框图,如图3所示,所述聚集结果的确定装置包括信息获取模块301和结果确定模块302,其中,
信息获取模块301,用于在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息,其中,所述目标外连接函数为所述目标聚集函数的直接孩子且所述目标外连接函数的连接条件为等式;
结果确定模块302,用于根据所述项值信息确定所述目标聚集函数的聚集结果。
本发明实施例三提供的聚集结果的确定装置,在执行到目标聚集函数对应的目标外连接函数时,获取该目标外连接函数的连接项的项值信息,并根据目标外连接函数的项值信息确定该目标聚集函数的聚集结果。本实施例通过采用上述技术方案,在执行外连接函数的过程中同时完成聚集函数的计算,而无需首先计算得到目标外连接函数的连接结果,然后再对该连接结果执行聚集操作,能够简化聚集函数聚集结果的计算过程,减少计算过程中的数据运算量,从而,提高聚集函数聚集结果的计算速度,进而提高数据库的查询效率,减少用户的等待时间。
进一步地,所述聚集结果的确定装置还可以包括:函数确定模块,用于在所述在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息之前,确定SQL语句中包含目标聚集函数,其中,所述目标聚集函数为用于统计聚集对象的数量且孩子为非分组函数的求和函数或计数函数,所述聚集对象包括下述四项中的至少一项:所述目标外连接函数两连接项中的匹配项值对、所述目标外连接函数左连接项中存在的不与右连接项中的任一右项值相等且符合连接条件的非匹配左项值、所述目标外连接函数右连接项中存在的不与左连接项中的任一左项值相等且符合连接条件的非匹配右项值以及所述目标外连接函数基准连接项中不符合连接条件的非连接项值。
在上述方案中,所述结果确定模块302可以包括:表达式解析单元,用于解析所述目标聚集函数的表达式,确定所述目标聚集函数的目标聚集对象;数量确定单元,用于根据所述项值信息确定所述目标聚集对象的数量,以得到所述目标聚集函数的聚集结果。
在上述方案中,当所述目标外连接函数为左外连接函数时,所述数量确定单元可以用于:根据所述项值信息,统计左连接项中的左项值与右连接项中的右项值相等的总次数作为所述匹配项值对的第一数量,统计左连接项中存在的不与右连接项中的任一右项值相等且项值不为NULL值的第二左连接项的数量作为所述非匹配左项值的第二数量,统计左连接项中存在的项值为NULL值的第三左项值的数量作为所述非连接项值的第四数量,并将所述非匹配右项值的第三数量确定为零。
在上述方案中,当所述目标外连接函数为右外连接函数时,所述数量确定单元可以用于:根据所述项值信息,统计右连接项中的右项值与左连接项中的左项值相等的总次数作为所述匹配项值对的第一数量,统计右连接项中存在的不与左连接项中的任一左项值相等且项值不为NULL值的第二右项值的数量作为所述非匹配右项值的第三数量,统计右连接项中存在的项值为NULL值的第三右项值的数量作为所述非连接项值的第四数量,并将所述非匹配左项值的第二数量确定为零。
在上述方案中,当所述目标外连接函数为全外连接函数时,所述数量确定单元可以用于:根据所述项值信息,统计任一连接项中的项值与另一连接项中的项值相等的总次数作为所述匹配项值对的第一数量,统计左连接项中存在的不与右连接项中的任一右项值相等且项值不为NULL值的第二左项值的数量作为所述非匹配左项值的第二数量,统计右连接项中存在的不与左连接项中的任一左连接项相等且项值不为NULL值的第二右项值的数量作为所述非匹配右项值的第三数量,并计算左连接项中存在的项值为NULL值的第三左项值的数量与右连接项中存在的项值为NULL值的第三右项值的数量之和作为所述非连接项值的第四数量。
本发明实施例三提供的聚集结果的确定装置可执行本发明任意实施例提供的聚集结果的确定方法,具备执行聚集结果的确定方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的聚集结果的确定方法。
实施例四
图4为本发明实施例四提供的一种设备的结构示意图,如图4所示,该设备包括处理器40和存储器41,还可以包括输入装置42和输出装置43;设备中处理器40的数量可以是一个或多个,图4中以一个处理器40为例;设备中的处理器40、存储器41、输入装置42和输出装置43可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的聚集结果的确定方法对应的程序指令/模块(例如,聚集结果的确定装置中的信息获取模块301和结果确定模块302)。处理器40通过运行存储在存储器41中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的聚集结果的确定方法。
存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置42可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置43可包括显示屏等显示设备。
本发明实施例四还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种聚集结果的确定方法,该方法包括:
在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息,其中,所述目标外连接函数为所述目标聚集函数的直接孩子且所述目标外连接函数的连接条件为等式;
根据所述项值信息确定所述目标聚集函数的聚集结果。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的聚集结果的确定方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述聚集结果的确定装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种聚集结果的确定方法,其特征在于,包括:
在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息,其中,所述目标外连接函数为所述目标聚集函数的直接孩子且所述目标外连接函数的连接条件为等式;
根据所述项值信息确定所述目标聚集函数的聚集结果;
在所述在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息之前,还包括:
确定SQL语句中包含目标聚集函数,其中,所述目标聚集函数为用于统计聚集对象的数量且孩子为非分组函数的求和函数或计数函数,所述聚集对象包括下述四项中的至少一项:所述目标外连接函数两连接项中的匹配项值对、所述目标外连接函数左连接项中存在的不与右连接项中的任一右项值相等且符合连接条件的非匹配左项值、所述目标外连接函数右连接项中存在的不与左连接项中的任一左项值相等且符合连接条件的非匹配右项值以及所述目标外连接函数基准连接项中不符合连接条件的非连接项值。
2.根据权利要求1所述的方法,所述根据所述项值信息确定所述目标聚集函数的聚集结果,包括:
解析所述目标聚集函数的表达式,确定所述目标聚集函数的目标聚集对象;
根据所述项值信息确定所述目标聚集对象的数量,以得到所述目标聚集函数的聚集结果。
3.根据权利要求2所述的方法,其特征在于,所述目标外连接函数为左外连接函数,所述根据所述项值信息确定所述目标聚集对象的数量,包括:
根据所述项值信息,统计左连接项中的左项值与右连接项中的右项值相等的总次数作为所述匹配项值对的第一数量,统计左连接项中存在的不与右连接项中的任一右项值相等且项值不为NULL值的第二左连接项的数量作为所述非匹配左项值的第二数量,统计左连接项中存在的项值为NULL值的第三左项值的数量作为所述非连接项值的第四数量,并将所述非匹配右项值的第三数量确定为零。
4.根据权利要求2所述的方法,其特征在于,所述目标外连接函数为右外连接函数,所述根据所述项值信息确定所述目标聚集对象数量,包括:
根据所述项值信息,统计右连接项中的右项值与左连接项中的左项值相等的总次数作为所述匹配项值对的第一数量,统计右连接项中存在的不与左连接项中的任一左项值相等且项值不为NULL值的第二右项值的数量作为所述非匹配右项值的第三数量,统计右连接项中存在的项值为NULL值的第三右项值的数量作为所述非连接项值的第四数量,并将所述非匹配左项值的第二数量确定为零。
5.根据权利要求2所述的方法,其特征在于,所述目标外连接函数为全外连接函数,所述根据所述项值信息确定所述目标聚集对象数量,包括:
根据所述项值信息,统计任一连接项中的项值与另一连接项中的项值相等的总次数作为所述匹配项值对的第一数量,统计左连接项中存在的不与右连接项中的任一右项值相等且项值不为NULL值的第二左项值的数量作为所述非匹配左项值的第二数量,统计右连接项中存在的不与左连接项中的任一左连接项相等且项值不为NULL值的第二右项值的数量作为所述非匹配右项值的第三数量,并计算左连接项中存在的项值为NULL值的第三左项值的数量与右连接项中存在的项值为NULL值的第三右项值的数量之和作为所述非连接项值的第四数量。
6.一种聚集结果的确定装置,其特征在于,包括:
信息获取模块,用于在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息,其中,所述目标外连接函数为所述目标聚集函数的直接孩子且所述目标外连接函数的连接条件为等式;
函数确定模块,用于在所述在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息之前,确定SQL语句中包含目标聚集函数,其中,所述目标聚集函数为用于统计聚集对象的数量且孩子为非分组函数的求和函数或计数函数,所述聚集对象包括下述四项中的至少一项:所述目标外连接函数两连接项中的匹配项值对、所述目标外连接函数左连接项中存在的不与右连接项中的任一右项值相等且符合连接条件的非匹配左项值、所述目标外连接函数右连接项中存在的不与左连接项中的任一左项值相等且符合连接条件的非匹配右项值以及所述目标外连接函数基准连接项中不符合连接条件的非连接项值;
结果确定模块,用于根据所述项值信息确定所述目标聚集函数的聚集结果。
7.根据权利要求6所述的装置,其特征在于,还包括:
函数确定模块,用于在所述在执行到目标聚集函数对应的目标外连接函数时,获取目标外连接函数的连接项的项值信息之前,确定SQL语句中包含目标聚集函数,其中,所述目标聚集函数为用于统计聚集对象的数量且孩子为非分组函数的求和函数或计数函数,所述聚集对象包括下述四项中的至少一项:所述目标外连接函数两连接项中的匹配项值对、所述目标外连接函数左连接项中存在的不与右连接项中的任一右项值相等且符合连接条件的非匹配左项值、所述目标外连接函数右连接项中存在的不与左连接项中的任一左项值相等且符合连接条件的非匹配右项值以及所述目标外连接函数基准连接项中不符合连接条件的非连接项值。
8.一种聚集结果的确定设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的聚集结果的确定方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的聚集结果的确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010207457.5A CN111309738B (zh) | 2020-03-23 | 2020-03-23 | 聚集结果的确定方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010207457.5A CN111309738B (zh) | 2020-03-23 | 2020-03-23 | 聚集结果的确定方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309738A CN111309738A (zh) | 2020-06-19 |
CN111309738B true CN111309738B (zh) | 2023-05-16 |
Family
ID=71157311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010207457.5A Active CN111309738B (zh) | 2020-03-23 | 2020-03-23 | 聚集结果的确定方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309738B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304505A (zh) * | 2018-01-18 | 2018-07-20 | 上海达梦数据库有限公司 | 一种sql语句的处理方法、装置、服务器及存储介质 |
CN110032445A (zh) * | 2019-03-07 | 2019-07-19 | 北京东方国信科技股份有限公司 | 大数据聚集计算方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090077054A1 (en) * | 2007-09-13 | 2009-03-19 | Brian Robert Muras | Cardinality Statistic for Optimizing Database Queries with Aggregation Functions |
-
2020
- 2020-03-23 CN CN202010207457.5A patent/CN111309738B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304505A (zh) * | 2018-01-18 | 2018-07-20 | 上海达梦数据库有限公司 | 一种sql语句的处理方法、装置、服务器及存储介质 |
CN110032445A (zh) * | 2019-03-07 | 2019-07-19 | 北京东方国信科技股份有限公司 | 大数据聚集计算方法及装置 |
Non-Patent Citations (1)
Title |
---|
肖杰 ; 谢东 ; 曾玢石 ; .SQL聚集函数扩展.计算机工程.2009,(16),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111309738A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110515973B (zh) | 一种数据查询的优化方法、装置、设备及存储介质 | |
US7814042B2 (en) | Selecting candidate queries | |
US20050210023A1 (en) | Query optimizer using implied predicates | |
US20220083874A1 (en) | Method and device for training search model, method for searching for target object, and storage medium | |
CN110502532B (zh) | 远程数据库对象的优化方法、装置、设备和存储介质 | |
CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
CN111651641B (zh) | 一种图查询方法、装置及存储介质 | |
CN112083812B (zh) | 联想词确定方法、装置、存储介质和电子设备 | |
CN104077297A (zh) | 基于本体的查询方法及装置 | |
CN110362593B (zh) | 一种数据查询方法、装置、设备及存储介质 | |
CN108733790B (zh) | 数据排序方法、装置、服务器和存储介质 | |
CN112765282A (zh) | 一种数据联机分析处理方法、装置、设备及存储介质 | |
CN113946600A (zh) | 数据查询方法、装置、计算机设备和介质 | |
CN111309753B (zh) | 结构化查询语句的优化方法、装置、设备及存储介质 | |
CN104794130B (zh) | 一种表间关联查询方法和装置 | |
CN110362652A (zh) | 基于空间-语义-数值相关度的空间关键字Top-K查询方法 | |
CN111309738B (zh) | 聚集结果的确定方法、装置、设备和存储介质 | |
CN111611471A (zh) | 一种搜索方法、装置及电子设备 | |
CN110990423B (zh) | Sql语句的执行方法、装置、设备和存储介质 | |
US11144552B2 (en) | Supporting joins in directed acyclic graph knowledge bases | |
CN107229704A (zh) | 一种基于ksp算法的资源描述框架查询方法和系统 | |
CN111611343A (zh) | 基于知识图谱最短路径查询的搜索系统、方法及设备 | |
CN110765370A (zh) | 地点信息存储方法、推荐地点的查询方法、装置及服务器 | |
CN109753520B (zh) | 半连接查询方法、装置、服务器及存储介质 | |
CN110162574B (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 |