CN114328606B - Sql执行效率的提高方法、设备及存储介质 - Google Patents
Sql执行效率的提高方法、设备及存储介质 Download PDFInfo
- Publication number
- CN114328606B CN114328606B CN202111659306.4A CN202111659306A CN114328606B CN 114328606 B CN114328606 B CN 114328606B CN 202111659306 A CN202111659306 A CN 202111659306A CN 114328606 B CN114328606 B CN 114328606B
- Authority
- CN
- China
- Prior art keywords
- optimizable
- aggregation
- target
- execution cost
- sql
- 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
Abstract
本申请实施例公开了一种SQL执行效率的提高方法、设备及存储介质。其中,方法包括:获取目标SQL的运算参与表的基本信息和运算参与操作的类型;基于基本信息和类型,从运算参与操作中识别可优化操作;判断各可优化操作是否符合预设条件,并在可优化操作符合预设条件的情况下,确定各可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价;若初始执行代价和目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为可优化操作的替换操作;利用替换操作对目标SQL中对应的可优化操作进行替换,以提高目标SQL的执行效率。借助聚合操作,可以减少重复元素,避免对重复元素的重复计算,从而提高目标SQL的执行效率和计算性能。
Description
技术领域
本申请实施例涉及数据库语句执行技术,尤其涉及一种SQL执行效率的提高方法、设备及存储介质。
背景技术
在数据库领域中,关联和聚合是应用中的常用的操作,关联指的是模型元素之间的一种语义联系,是类之间的一种很弱的联系。关联可以有方向,可以是单向关联,也可以是双向关联。聚合指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。
在进行关联时,若参与关联的表存在大量重复键值时,关联的结果会膨胀,导致后续操作产生更多的重复计算,从而影响SQL的执行性能,特别是关联出现倾斜时,结果会急剧膨胀,系统资源被耗光,直至应用/系统崩溃。
发明内容
本申请实施例提供一种SQL执行效率的提高方法、设备及存储介质,以减少重复元素,避免对重复元素的重复计算,减少计算规模,从而提高目标SQL的执行效率和计算性能。
第一方面,本申请实施例提供了一种SQL执行效率的提高方法,包括:
获取目标SQL的运算参与表的基本信息和运算参与操作的类型;
基于所述基本信息和所述类型,从所述运算参与操作中识别可优化操作;
判断各所述可优化操作是否符合预设条件,并在所述可优化操作符合所述预设条件的情况下,确定各所述可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价;
对于任一所述可优化操作,若所述初始执行代价和所述目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为所述可优化操作的替换操作;
利用所述替换操作对所述目标SQL中对应的所述可优化操作进行替换,以提高所述目标SQL的执行效率。
第二方面,本申请实施例还提供了一种计算机设备,包括处理器和存储器,存储器用于存储指令,当指令执行时使得处理器执行以下操作:
获取目标SQL的运算参与表的基本信息和运算参与操作的类型;
基于所述基本信息和所述类型,从所述运算参与操作中识别可优化操作;
判断各所述可优化操作是否符合预设条件,并在所述可优化操作符合所述预设条件的情况下,确定各所述可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价;
对于任一所述可优化操作,若所述初始执行代价和所述目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为所述可优化操作的替换操作;
利用所述替换操作对所述目标SQL中对应的所述可优化操作进行替换,以提高所述目标SQL的执行效率。
第三方面,本申请实施例还提供了一种存储介质,存储介质用于存储指令,指令用于执行:
获取目标SQL的运算参与表的基本信息和运算参与操作的类型;
基于所述基本信息和所述类型,从所述运算参与操作中识别可优化操作;
判断各所述可优化操作是否符合预设条件,并在所述可优化操作符合所述预设条件的情况下,确定各所述可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价;
对于任一所述可优化操作,若所述初始执行代价和所述目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为所述可优化操作的替换操作;
利用所述替换操作对所述目标SQL中对应的所述可优化操作进行替换,以提高所述目标SQL的执行效率。
本申请实施例的技术方案,通过识别目标SQL中符合预设条件的可优化操作,然后对可优化操作添加聚合操作,生成相应的替换操作,再利用替换操作对目标SQL中对应的可优化操作进行替换,借助聚合操作,可以减少重复元素,避免对重复元素的重复计算,减少计算规模,从而提高目标SQL的执行效率和计算性能。
附图说明
图1a为本申请的实施例一提供的一种SQL执行效率的提高方法的流程示意图;
图1b为本申请的实施例一提供的一种目标SQL执行计划操作树的示意图;
图2为本申请实施例二提供的一种SQL执行效率的提高装置的结构示意图;
图3为本申请实施例三提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
本文使用的术语“目标SQL”指的是需要进行执行效率提高的SQL语句。
本文使用的术语“运算参与表”指的是目标SQL的运算过程中会参与的数据表,其基本信息可以包括表的行数、关联操作对应的关联字段、聚合操作对应的聚合字段、所需列的NDV(number ofdistinct values)等。
本文使用的术语“运算参与操作”指的是目标SQL的运算过程中涉及到的操作,比如聚合操作(对一组值执行计算并返回单一的值的函数)、关联操作(即各类join函数以及涉及两表之间数据筛选的函数)、读表操作等。
本文使用的术语“可优化操作”指的是前述介绍的运算参与操作中,可以进行优化,以提高目标SQL执行效率的操作。
本文使用的术语“初始执行代价”指的是借助DBMS中的代价模型(COST)对执行语句的执行代价进行估计得到的值,一般该值可以体现执行目标SQL所需要的耗费的资源代价(比如内存资源、时间资源等)。
本文使用的术语“目标执行代价”同样指的是借助DBMS中的代价模型(COST)对执行语句的执行代价进行估计得到的值,与初始执行代价不同,目标执行代价为添加聚合操作后的可优化操作的执行代价。
本文使用的术语“替换操作”指的是用来替换目标SQL中的可优化操作的操作。
本文使用的术语“聚合率”指的是操作过程中体现数据聚合程度的值。
本文使用的术语“执行计划操作树”指的是目标SQL对应的操作树,该操作树能够体现出目标SQL中各操作的执行流程。
本文使用的术语“可归约性”指的是每个聚合表达式中用到的列都来自同一个原始表或者聚合函数可拆解,并且拆解后的聚合表达式用到的列都来自一个原始表。
本文使用的术语“去重性”指的是操作在运算过程中需要真正进行去重,比如union/intersect等。
本文使用的术语“虚拟列”用于记录重复元素的个数。
为了便于理解,将本申请实施例的主要发明构思进行简述。
在数据库领域中,关联和聚合是应用中的常用的操作,关联指的是模型元素之间的一种语义联系,是类之间的一种很弱的联系。关联可以有方向,可以是单向关联,也可以是双向关联。聚合指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。在进行关联时,若参与关联的表存在大量重复键值时,关联的结果会膨胀,导致后续操作产生更多的重复计算,从而影响SQL的执行性能,特别是关联出现倾斜时,结果会急剧膨胀,系统资源被耗光,直至应用/系统崩溃。
现有技术中,会通过以下3种方式解决数据倾斜的问题:
其一,Apache Hive提供一种Skewjoin的方法来解决倾斜问题,其思想是将倾斜的表拆成两部分:倾斜的部分和不倾斜的部分。对倾斜的部分,用特殊的关联方法(MAPJOIN)去关联,由算法本身保证不会出现倾斜问题。但是实际数据可能存在很多倾斜的key,没办法直接分开;即使分开之后,还是太多而无法用MAPJOIN,同样无法应用skewjoin的解决方法。
其二,当前比较通用的方法,partialjoin,通过数据分块,一部分一部分的join,然后将结果拼接起来,但是这种方法性能很差。Partialjoin的做法效率非常差,尤其是分布式大数据环境下,其时间复杂度很可能是无法忍受的。并且如何确定分块的大小同样是一个非常棘手的问题。
其三,针对Spark开发者,可以使用随机前缀和扩容RDD进行join等修改RDD的方式来解决join倾斜问题,Spark 3.X的自适应查询执行优化将倾斜的分区分割成更小的子分区。针对Spark的修改RDD的方法,并不能解决普通应用的问题,只能部分缓解问题,适用场景不多。将倾斜的分区分割成更小的子分区,并不能解决join结果膨胀的问题。
上述方法,并没有解决重复数据带来的重复计算的问题,即是能够解决部分倾斜关联问题,性能通常也很难接受。发明人针对上述情况,在不改变SQL语义的情况下,通过加入额外的聚合,减少重复记录数量,以减少后续计算的数据量,从而整体上提高SQL执行效率,也可以解决大部分常见的倾斜关联的问题。
基于上述思考,发明人创造性的提出,通过识别目标SQL中符合预设条件的可优化操作,然后对可优化操作添加聚合操作,生成相应的替换操作,再利用替换操作对目标SQL中对应的可优化操作进行替换,借助聚合操作,对减少重复元素,避免对重复元素的重复计算,减少计算规模,从而提高目标SQL的执行效率和计算性能。
实施例一
图1a为本申请的实施例一提供的一种SQL执行效率的提高方法的流程示意图。本申请实施例可适用于对SQL的执行过程进行效率提高的情况,该方法可以由本申请实施例提供的SQL执行效率的提高装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成在计算机设备中。如图1a所示,本申请实施例的方法具体包括:
步骤101、获取目标SQL的运算参与表的基本信息和运算参与操作的类型。
本步骤中,目标SQL即需要提高执行效率的SQL执行语句。目标SQL在执行时可能会包含多个操作,每个操作即运算参与操作,每个操作所对应的数据表即运算参与表。其中,运算参与表的基本信息可以指数据表的行数、关联操作对应的关联字段、聚合操作对应的聚合字段、所需列的NDV。
另外,运算参与操作有多种类型,比如关联操作、聚合操作等等。在一个具体的例子中,分别从表F和表D读表,再根据F.id=D.id进行关联,然后按照D.val进行分组,并对各组的D.val2进行聚合,需要说明的是,F为事实表,D为维度表。
以上述具体的例子为例,目标SQL对应为:
select D.val,sum(D.val2)
from F join D
on F.id=D.id
group by D.val。
其中,运算参与表为表F和表D,基本信息为各表的表行数和所需列的NDV。运算参与操作主要有where、group by和sum,其中,join是关联操作,sum为聚合操作,from与读表操作相关。
步骤102、基于基本信息和类型,从运算参与操作中识别可优化操作。
本步骤中,在识别可优化操作的过程中,可以通过各运算参与操作的聚合率来进行识别,其中,可以先基于基本信息和类型,确定各运算参与操作的聚合率,然后将聚合率大于预设聚合率阈值的运算参与操作识别为可优化操作。
其中,可以逐一确定各运算参与操作的聚合率,但是,需要说明的是,由于目标SQL中,各操作之间会有执行顺序,而且各操作之间会有数据的关联,因此,确定聚合率时,可以基于基本信息和类型先得到确定聚合率所需的目标参数,该目标参数一般可以包括行数、待聚合字段和所需列的NDV。
另外,不同操作类型的运算参与操作会有不同的聚合率算法,可以预先将操作类型与聚合率算法的映射关系进行存储,在确定运算参与操作的聚合率过程中,对于任一运算参与操作,根据预设聚合率算法与操作类型的映射关系确定运算参与操作的类型对应的目标聚合率算法;然后从基本信息中提取目标聚合率算法所需的目标参数,并基于目标参数,利用目标聚合率算法确定运算参与操作的聚合率。
在一个具体的例子中,前述具体例子中的目标SQL中包含与关联操作和/或读表操作相关的运算参与操作,那么,可以根据预设聚合率算法与操作类型的映射关系确定出来对于关联操作和读表操作的聚合率算法,对于关联操作,聚合率为:聚合率(关联)=max(关联后的行数/(NDV(待聚合字段1)*...NDV(待聚合字段n)),1);对于读表操作,聚合率为:聚合率(读表)=max(表的行数/(NDV(待聚合字段1)*...*NDV(待聚合字段n)),1)。其中,“关联后的行数”可由DBMS根据join的类型、关联键值的NDV等信息估计。
需要说明的是,目标参数可以包括待聚合字段,目标SQL中的运算参与操作包括读表操作和关联操作,相应的,从基本信息中提取目标聚合率算法所需的目标参数可以如下:
遍历目标SQL对应的执行计划操作树,标记目标SQL中聚合操作对应的聚合字段以及关联操作对应的关联字段;自顶向下遍历操作树,根据预设第一待聚合字段算法以及聚合操作对应的聚合字段确定聚合操作的子操作的待聚合字段,根据预设第二待聚合字段算法以及关联操作对应的关联字段确定关联操作的子操作的待聚合字段。
需要说明的是,执行计划操作树指的是能够体现出执行过程的树状图,可以参阅图1b,图1b为本申请的实施例一提供的一种目标SQL执行计划操作树的示意图。
如图1b所示,该目标SQL涉及到了关联1、关联2和聚合,其中,先对聚合操作对应的聚合字段和关联操作对应的关联字段进行标记,聚合操作对应的聚合字段有C.val,D.val2,关联2对应的关联字段有F.id2,C.id,关联1对应的关联字段有F.id1,D.id。
然后,可以基于第一待聚合字段算法确定聚合操作的子操作对应的待聚合字段,以及基于第二聚合字段算法确定关联操作的自操作对应的待聚合字段。具体的,关联2为聚合的子操作,关联1为关联2的子操作,C为关联2的子操作,F、D为关联1的子操作。
第一待聚合字段算法为:待聚合字段={聚合操作的聚合字段}U{聚合操作的待聚合字段};
第二待聚合字段算法为:待聚合字段={关联操作的关联字段}U{关联操作的待聚合字段}-{不是来自子操作的字段}。
由于图1b中,聚合并非子操作,因此,该操作只有聚合字段,没有待聚合字段。相应的,关联2的待聚合字段需要利用第一待聚合字段算法进行计算,即{C.val,D.val2}U{空}={C.val,D.val2}。
关联1的待聚合字段需要利用第二待聚合字段算法进行计算,即{F.id2,C.id}U{C.val,D.val2}-{不是来自子操作的字段}={F.id2,D.val2}。其中,{不是来自子操作的字段}为{C.val,C.id}。虽然关联字段只是F.id1,D.id,但是也可以认为F表和D表中的所有字段都是来自关联1的字段,因为其不涉及C表中的字段,就需要把C表中的字段进行剔除。
对于C、F、D的待关联字段的计算过程,可以参考前述对于关联1的计算,此处不再赘述。
步骤103、判断各可优化操作是否符合预设条件,并在可优化操作符合预设条件的情况下,确定各可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价。
需要说明的是,由于有些SQL本身带有聚合操作,因此,新添加的聚合操作必须能够推导出原来聚合的语义,因此,并不是所有的操作都可以通过添加聚合来解决重复问题,因此,需要原有聚合是具有可归约性的。具体的,若目标SQL中不包含任何聚合操作,判断各可优化操作符合预设条件;若目标SQL中包含聚合操作,若包含的聚合操作具有可归约性,判断各可优化操作符合预设条件。
在一个具体的例子中,常用的具有可归约性的属于聚合操作的函数包括sum,count,min和max等,而avg不可归约,但是实际计算时avg会变成sum/count,这样就可以归约了。也就是说,可以通过对运算进行变换,使其具有可归约性。
具体的,原有聚合操作若能满足如下条件,可以确定其具有可归约性:
1)每个聚合表达式中用到的列都来自同一个原始表;或者
2)聚合函数可拆解,并且拆解后的聚合表达式用到的列都来自同一个原始表,例如sum(a-b)=>sum(a)-sum(b);sum(a+b)=>sum(a)+sum(b)。
另外,对于任一可优化操作,利用预设代价模型计算可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价。
具体的,预设代价模型可以是DBMS中的COST函数。在一个具体的例子中,变换前SQL总的执行代价(初始执行代价)为:COST_PRE=SUM(COST(操作));添加聚合操作后SQL总的执行代价(目标执行代价)为:COST_POST=SUM(COST(操作))。
步骤104、对于任一可优化操作,若初始执行代价和目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为可优化操作的替换操作。
本步骤中,预设优化条件可以是目标执行代价小于放大N倍后的初始执行代价。需要说明的是,在COST估计不准确的系统,可以调大N的取值。具体的,将初始执行代价放大N倍,若目标执行代价小于放大N倍后的初始执行代价,确定初始执行代价和目标执行代价满足预设优化条件,其中,N大于等于1。
另外,在添加聚合操作时,对于不同的情况,添加聚合操作的方式也是不同的,其中,有些集合运算是需要真正去重的,例如union/intersect。对这种运算的子操作,通过本发明添加聚合操作后,不需要特别处理。如果最终结果只是计算min/max,通过本发明添加聚合操作后,也不需要特别处理。
如果聚合函数只包含新增聚合的列,则在添加聚合操作时,进行预先聚合。例如对如下SQL,
Select D.v,sum(F.v)
from
F join D on F.id=D.id
group by D.v。
通过预先聚合可以优化为:
Select D.v,sum(sumed_v)
from
(select F.id,sum(F.v)sumed_v from F group by F.id)Fjoin D on F.id=D.id
group by D.v;
另外,本实施例中用聚合去重,并非是真正去重,如果聚合函数没有包含新增聚合的列,为了保持语义不变,在添加聚合操作时,需要记录重复元素的个数,为此可以增加一个虚拟列(cnt)来记录本行重复的次数。
例如对如下SQL,
Select D.v,sum(D.v2),count(D.v3)
from
F join D on F.id=D.id
group by D.v。
通过__cnt__计算最终的聚合函数为:
Select D.v,sum(D.v2)*__cnt__,count(D.v3)*__cnt__
from
(select F.id,count(*)__cnt__from F group by F.id)F join D on F.id=D.id
group by D.v;
这种变换的最终效果是将cnt次的计算,变成一次“*cnt”的运算,从而最终聚合的效率会大幅提升。
具体的,若可优化操作具有去重性,直接为可优化操作添加聚合操作,得到可优化操作的替换操作;
若可优化操作不具有去重性,对可优化操作添加预先聚合操作,得到可优化操作的替换操作。
若目标SQL中的聚合函数没有包含新增聚合的列,对可优化操作添加预先聚合操作,同时增加虚拟列,得到可优化操作的替换操作,虚拟列用于记录重复元素的个数;
若目标SQL中的聚合函数没有包含新增聚合的列,对可优化操作添加预先聚合操作,得到可优化操作的替换操作。
步骤105、利用替换操作对目标SQL中对应的可优化操作进行替换,以提高目标SQL的执行效率。
本步骤中,利用替换操作对目标SQL中对应的可优化操作进行替换,会涉及到对于最终的聚合函数的变换,在一个具体的例子中,该变换与前述替换操作的不同情况相关,不同的情况对应不同的变换方式:
如果新增聚合的列没有用在聚合函数里面,则最终的聚合函数进行如下变换:
count(*)=>sum(cnt);
SUM(v)=>sum(v)*cnt;
avg(v)=>sum(v)*cnt/sum(cnt);
max(v)或min(v)忽略cnt。
如果聚合函数只包含新增聚合的列,则最终的聚合函数进行如下变换:
count(v)=>sum(counted_v);
sum(v)=>sum(sumed_v);
max(v)=>max(v);
min(v)=>min(v);
avg(v)=>sum(v)/count(v)=>sum(sumed_v)/count(counted_v)。
如果参与join的两个表都存在重复计算,依据本发明,参与连接的两个子运算都可能添加聚合操作。则最终的聚合函数进行如下变换:
count(*)=>sum(cnt1*cnt2);
count(vop1)=>sum(counted_vop1)*cnt2;
count(vop2)=>sum(counted_vop2)*cnt1;
sum(vop1)=>sum(sumed_vop1)*cnt2;
sum(vop2)=>sum(sumed_vop2)*cnt1;
max(v)=>max(v);
min(v)=>min(v);
avg(v)=>sum(v)/count(v)。
在一个具体的例子中,变换前后可以如下:
变换前:
Select D.v,count(*),sum(D.v2),sum(F.v)
from
F join D on F.id=D.id
group by D.v。
变换后:
Select D.v,
sum(__cnt1__*__cnt2__),
sum(sumed_D*__cnt2__),
sum(sumed_F*__cnt1__)
from
(select F.v,F.id,sum(D.v2)sumed_F,count(1)__cnt1__from F group byF.id,F.v)F
join(select D.v,D.id,sum(D.v2)sumed_D,count(1)__cnt2__from D group byD.id,D.v)D
on F.id=D.id
group by D.v。
另外,如果最终结果没有聚合,比如直接输出select出来的字段,则需要加个循环,该循环是对于cnt虚拟列的中记录的重复次数的循环,即cnt记录的重复多少次,就需要循环输出多少次结果。
在一个具体的例子中,该循环可以为:
for(int i=0;i<__cnt__;i++){
Output(row);
}
另外,如果结果带有limit限制,则计数器也需要放到循环里进行累加,直到满足限制条件。
本申请实施例提供了一种SQL执行效率的提高方法,获取目标SQL的运算参与表的基本信息和运算参与操作的类型;基于基本信息和类型,从运算参与操作中识别可优化操作;判断各可优化操作是否符合预设条件,并在可优化操作符合预设条件的情况下,确定各可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价;对于任一可优化操作,若初始执行代价和目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为可优化操作的替换操作;利用替换操作对目标SQL中对应的可优化操作进行替换,以提高目标SQL的执行效率。通过识别目标SQL中符合预设条件的可优化操作,然后对可优化操作添加聚合操作,生成相应的替换操作,再利用替换操作对目标SQL中对应的可优化操作进行替换,借助聚合操作,可以减少重复元素,避免对重复元素的重复计算,减少计算规模,从而提高目标SQL的执行效率和计算性能。
实施例二
图2为本申请实施例二提供的一种SQL执行效率的提高装置的结构示意图。该装置可采用软件和/或硬件的方式实现,并一般可集成在计算机设备中。如图2所示,装置包括:获取模块201、识别模块202、添加模块203、替换操作确定模块204以及替换模块205。
其中,获取模块201,用于获取目标SQL的运算参与表的基本信息和运算参与操作的类型;识别模块202,用于基于基本信息和类型,从运算参与操作中识别可优化操作;添加模块203,用于判断各可优化操作是否符合预设条件,并在可优化操作符合预设条件的情况下,确定各可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价;替换操作确定模块204,用于对于任一可优化操作,若初始执行代价和目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为可优化操作的替换操作;替换模块205,用于利用替换操作对目标SQL中对应的可优化操作进行替换,以提高目标SQL的执行效率。
本申请实施例提供了一种SQL执行效率的提高装置,获取目标SQL的运算参与表的基本信息和运算参与操作的类型;基于基本信息和类型,从运算参与操作中识别可优化操作;判断各可优化操作是否符合预设条件,并在可优化操作符合预设条件的情况下,确定各可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价;对于任一可优化操作,若初始执行代价和目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为可优化操作的替换操作;利用替换操作对目标SQL中对应的可优化操作进行替换,以提高目标SQL的执行效率。通过识别目标SQL中符合预设条件的可优化操作,然后对可优化操作添加聚合操作,生成相应的替换操作,再利用替换操作对目标SQL中对应的可优化操作进行替换,借助聚合操作,可以减少重复元素,避免对重复元素的重复计算,减少计算规模,从而提高目标SQL的执行效率和计算性能。
在上述各实施例的基础上,识别模块202具体用于基于基本信息和类型,确定各运算参与操作的聚合率(对于任一运算参与操作,根据预设聚合率算法与操作类型的映射关系确定运算参与操作的类型对应的目标聚合率算法;从基本信息中提取目标聚合率算法所需的目标参数(遍历目标SQL对应的执行计划操作树,标记目标SQL中聚合操作对应的聚合字段以及关联操作对应的关联字段;自顶向下遍历操作树,根据预设第一待聚合字段算法以及聚合操作对应的聚合字段确定聚合操作的子操作的待聚合字段,根据预设第二待聚合字段算法以及关联操作对应的关联字段确定关联操作的子操作的待聚合字段),并基于目标参数,利用目标聚合率算法确定运算参与操作的聚合率);
将聚合率大于预设聚合率阈值的运算参与操作识别为可优化操作。
在上述各实施例的基础上,添加模块203具体用于若目标SQL中不包含任何聚合操作,判断各可优化操作符合预设条件;
若目标SQL中包含聚合操作,若包含的聚合操作具有可归约性,判断各可优化操作符合预设条件;
对于任一可优化操作,利用预设代价模型计算可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价。
在上述各实施例的基础上,替换操作确定模块204具体用于将初始执行代价放大N倍,若目标执行代价小于放大N倍后的初始执行代价,确定初始执行代价和目标执行代价满足预设优化条件,其中,N大于等于1。
若可优化操作具有去重性,直接为可优化操作添加聚合操作,得到可优化操作的替换操作;
若可优化操作不具有去重性,对可优化操作添加预先聚合操作,得到可优化操作的替换操作(若目标SQL中的聚合函数没有包含新增聚合的列,对可优化操作添加预先聚合操作,同时增加虚拟列,得到可优化操作的替换操作,虚拟列用于记录重复元素的个数;若目标SQL中的聚合函数没有包含新增聚合的列,对可优化操作添加预先聚合操作,得到可优化操作的替换操作)。
上述SQL执行效率的提高装置可执行本申请任意实施例所提供的SQL执行效率的提高方法,具备执行SQL执行效率的提高方法相应的功能模块和有益效果。
实施例三
图3为本申请实施例三提供的一种计算机设备的结构示意图。图3示出了适于用来实现本申请实施方式的示例性计算机设备包括处理器310、存储器320、输入装置330和输出装置340;计算机设备310的数量可以是一个或多个,图3中以一个处理器310为例;设备/终端/服务器中的处理器310、存储器320、输入装置330和输出装置340可以通过总线或其他方式连接,图3中以通过总线连接为例。
存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的SQL执行效率的提高方法对应的程序指令/模块(例如,SQL执行效率的提高装置中的获取模块201、识别模块202、添加模块203、替换操作确定模块204以及替换模块205)。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行设备/终端/服务器的各种功能应用以及数据处理,即实现上述实施例的方法:
处理器310通过运行存储在存储器320中的指令,从而执行各种功能应用以及数据处理,例如执行以下操作:
获取目标SQL的运算参与表的基本信息和运算参与操作的类型;
基于基本信息和类型,从运算参与操作中识别可优化操作;
判断各可优化操作是否符合预设条件,并在可优化操作符合预设条件的情况下,确定各可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价;
对于任一可优化操作,若初始执行代价和目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为可优化操作的替换操作;
利用替换操作对目标SQL中对应的可优化操作进行替换,以提高目标SQL的执行效率。
在上述各实施例的基础上,处理器是设置为通过以下方式从运算参与操作中识别可优化操作:
基于基本信息和类型,确定各运算参与操作的聚合率;
将聚合率大于预设聚合率阈值的运算参与操作识别为可优化操作。
在上述各实施例的基础上,处理器是设置为通过以下方式确定各运算参与操作的聚合率:
对于任一运算参与操作,根据预设聚合率算法与操作类型的映射关系确定运算参与操作的类型对应的目标聚合率算法;
从基本信息中提取目标聚合率算法所需的目标参数,并基于目标参数,利用目标聚合率算法确定运算参与操作的聚合率。
在上述各实施例的基础上,目标参数包括待聚合字段,目标SQL中的运算参与操作包括聚合操作和关联操作;
处理器是设置为通过以下方式从基本信息中提取目标聚合率算法所需的目标参数:
遍历目标SQL对应的执行计划操作树,标记目标SQL中聚合操作对应的聚合字段以及关联操作对应的关联字段;
自顶向下遍历操作树,根据预设第一待聚合字段算法以及聚合操作对应的聚合字段确定聚合操作的子操作的待聚合字段,根据预设第二待聚合字段算法以及关联操作对应的关联字段确定关联操作的子操作的待聚合字段。
在上述各实施例的基础上,处理器是设置为通过以下方式判断各可优化操作是否符合预设条件:
若目标SQL中不包含任何聚合操作,判断各可优化操作符合预设条件;
若目标SQL中包含聚合操作,若包含的聚合操作具有可归约性,判断各可优化操作符合预设条件。
在上述各实施例的基础上,处理器是设置为通过以下方式确定各可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价:
对于任一可优化操作,利用预设代价模型计算可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价。
在上述各实施例的基础上,处理器是设置为通过以下方式确定可优化操作的替换操作:
将初始执行代价放大N倍,若目标执行代价小于放大N倍后的初始执行代价,确定初始执行代价和目标执行代价满足预设优化条件,其中,N大于等于1。
若可优化操作具有去重性,直接为可优化操作添加聚合操作,得到可优化操作的替换操作;
若可优化操作不具有去重性,对可优化操作添加预先聚合操作,得到可优化操作的替换操作。
在上述各实施例的基础上,处理器是设置为通过以下方式对可优化操作添加预先聚合操作,得到可优化操作的替换操作:
若目标SQL中的聚合函数没有包含新增聚合的列,对可优化操作添加预先聚合操作,同时增加虚拟列,得到可优化操作的替换操作,虚拟列用于记录重复元素的个数;
若目标SQL中的聚合函数没有包含新增聚合的列,对可优化操作添加预先聚合操作,得到可优化操作的替换操作。
存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至设备/终端/服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置330可用于接收输入的数字或字符信息,以及产生与设备/终端/服务器的用户设置以及功能控制有关的键信号输入。输出装置340可包括显示屏等显示设备。
实施例四
本申请实施例四提供了一种计算机可读存储介质,存储介质用于存储指令,指令用于执行本申请任一实施例所提供的SQL执行效率的提高方法。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (15)
1.一种SQL执行效率的提高方法,其特征在于,包括:
获取目标SQL的运算参与表的基本信息和运算参与操作的类型;
基于所述基本信息和所述类型,从所述运算参与操作中识别可优化操作;
判断各所述可优化操作是否符合预设条件,并在所述可优化操作符合所述预设条件的情况下,确定各所述可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价;
对于任一所述可优化操作,若所述初始执行代价和所述目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为所述可优化操作的替换操作;
利用所述替换操作对所述目标SQL中对应的所述可优化操作进行替换,以提高所述目标SQL的执行效率;
所述对于任一所述可优化操作,若所述初始执行代价和所述目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为所述可优化操作的替换操作,包括:
将所述初始执行代价放大N倍,若所述目标执行代价小于放大N倍后的初始执行代价,确定所述初始执行代价和所述目标执行代价满足预设优化条件,其中,所述N大于等于1;
若所述可优化操作具有去重性,直接为所述可优化操作添加聚合操作,得到所述可优化操作的替换操作;
若所述可优化操作不具有去重性,对所述可优化操作添加预先聚合操作,得到所述可优化操作的替换操作。
2.根据权利要求1所述的方法,其特征在于,所述基于所述基本信息和所述类型,从所述运算参与操作中识别可优化操作,包括:
基于所述基本信息和所述类型,确定各所述运算参与操作的聚合率;
将聚合率大于预设聚合率阈值的运算参与操作识别为可优化操作。
3.根据权利要求2所述的方法,其特征在于,所述基于所述基本信息和所述类型,确定各所述运算参与操作的聚合率,包括:
对于任一所述运算参与操作,根据预设聚合率算法与操作类型的映射关系确定所述运算参与操作的所述类型对应的目标聚合率算法;
从所述基本信息中提取所述目标聚合率算法所需的目标参数,并基于所述目标参数,利用所述目标聚合率算法确定所述运算参与操作的聚合率。
4.根据权利要求3所述的方法,其特征在于,所述目标参数包括待聚合字段,所述目标SQL中的运算参与操作包括聚合操作和关联操作;
所述从所述基本信息中提取所述目标聚合率算法所需的目标参数,包括:
遍历所述目标SQL对应的执行计划操作树,标记所述目标SQL中所述聚合操作对应的聚合字段以及所述关联操作对应的关联字段;
自顶向下遍历操作树,根据预设第一待聚合字段算法以及聚合操作对应的聚合字段确定所述聚合操作的子操作的待聚合字段,根据预设第二待聚合字段算法以及关联操作对应的关联字段确定所述关联操作的子操作的待聚合字段。
5.根据权利要求1所述的方法,其特征在于,所述判断各所述可优化操作是否符合预设条件,包括:
若所述目标SQL中不包含任何聚合操作,判断各所述可优化操作符合预设条件;
若所述目标SQL中包含聚合操作,若包含的所述聚合操作具有可归约性,判断各所述可优化操作符合预设条件。
6.根据权利要求1所述的方法,其特征在于,所述确定各所述可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价,包括:
对于任一所述可优化操作,利用预设代价模型计算所述可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价。
7.根据权利要求1所述的方法,其特征在于,所述对所述可优化操作添加预先聚合操作,得到所述可优化操作的替换操作,包括:
若所述目标SQL中的聚合函数没有包含新增聚合的列,对所述可优化操作添加预先聚合操作,同时增加虚拟列,得到所述可优化操作的替换操作,所述虚拟列用于记录重复元素的个数;
若所述目标SQL中的聚合函数没有包含新增聚合的列,对所述可优化操作添加预先聚合操作,得到所述可优化操作的替换操作。
8.一种计算机设备,包括处理器和存储器,所述存储器用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
获取目标SQL的运算参与表的基本信息和运算参与操作的类型;
基于所述基本信息和所述类型,从所述运算参与操作中识别可优化操作;
判断各所述可优化操作是否符合预设条件,并在所述可优化操作符合所述预设条件的情况下,确定各所述可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价;
对于任一所述可优化操作,若所述初始执行代价和所述目标执行代价满足预设优化条件,将添加聚合操作后的可优化操作确定为所述可优化操作的替换操作;
利用所述替换操作对所述目标SQL中对应的所述可优化操作进行替换,以提高所述目标SQL的执行效率;
所述处理器是设置为通过以下方式确定可优化操作的替换操作:
将所述初始执行代价放大N倍,若所述目标执行代价小于放大N倍后的初始执行代价,确定所述初始执行代价和所述目标执行代价满足预设优化条件,其中,所述N大于等于1;
若所述可优化操作具有去重性,直接为所述可优化操作添加聚合操作,得到所述可优化操作的替换操作;
若所述可优化操作不具有去重性,对所述可优化操作添加预先聚合操作,得到所述可优化操作的替换操作。
9.根据权利要求8所述的计算机设备,其特征在于,所述处理器是设置为通过以下方式从所述运算参与操作中识别可优化操作:
基于所述基本信息和所述类型,确定各所述运算参与操作的聚合率;
将聚合率大于预设聚合率阈值的运算参与操作识别为可优化操作。
10.根据权利要求9所述的计算机设备,其特征在于,所述处理器是设置为通过以下方式确定各所述运算参与操作的聚合率:
对于任一所述运算参与操作,根据预设聚合率算法与操作类型的映射关系确定所述运算参与操作的所述类型对应的目标聚合率算法;
从所述基本信息中提取所述目标聚合率算法所需的目标参数,并基于所述目标参数,利用所述目标聚合率算法确定所述运算参与操作的聚合率。
11.根据权利要求10所述的计算机设备,其特征在于,所述目标参数包括待聚合字段,所述目标SQL中的运算参与操作包括聚合操作和关联操作;
所述处理器是设置为通过以下方式从所述基本信息中提取所述目标聚合率算法所需的目标参数:
遍历所述目标SQL对应的执行计划操作树,标记所述目标SQL中所述聚合操作对应的聚合字段以及所述关联操作对应的关联字段;
自顶向下遍历操作树,根据预设第一待聚合字段算法以及聚合操作对应的聚合字段确定所述聚合操作的子操作的待聚合字段,根据预设第二待聚合字段算法以及关联操作对应的关联字段确定所述关联操作的子操作的待聚合字段。
12.根据权利要求8所述的计算机设备,其特征在于,所述处理器是设置为通过以下方式判断各所述可优化操作是否符合预设条件:
若所述目标SQL中不包含任何聚合操作,判断各所述可优化操作符合预设条件;
若所述目标SQL中包含聚合操作,若包含的所述聚合操作具有可归约性,判断各所述可优化操作符合预设条件。
13.根据权利要求8所述的计算机设备,其特征在于,所述处理器是设置为通过以下方式确定各所述可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价:
对于任一所述可优化操作,利用预设代价模型计算所述可优化操作的初始执行代价以及添加聚合操作后各可优化操作的目标执行代价。
14.根据权利要求8所述的计算机设备,其特征在于,所述处理器是设置为通过以下方式对所述可优化操作添加预先聚合操作,得到所述可优化操作的替换操作:
若所述目标SQL中的聚合函数没有包含新增聚合的列,对所述可优化操作添加预先聚合操作,同时增加虚拟列,得到所述可优化操作的替换操作,所述虚拟列用于记录重复元素的个数;
若所述目标SQL中的聚合函数没有包含新增聚合的列,对所述可优化操作添加预先聚合操作,得到所述可优化操作的替换操作。
15.一种存储介质,所述存储介质用于存储指令,所述指令用于执行如权利要求1-7中任一所述的SQL执行效率的提高方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111659306.4A CN114328606B (zh) | 2021-12-30 | 2021-12-30 | Sql执行效率的提高方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111659306.4A CN114328606B (zh) | 2021-12-30 | 2021-12-30 | Sql执行效率的提高方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114328606A CN114328606A (zh) | 2022-04-12 |
CN114328606B true CN114328606B (zh) | 2022-11-29 |
Family
ID=81019420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111659306.4A Active CN114328606B (zh) | 2021-12-30 | 2021-12-30 | Sql执行效率的提高方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328606B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115905236B (zh) * | 2022-11-30 | 2023-08-22 | 深圳计算科学研究院 | 一种数据处理方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6510422B1 (en) * | 2000-09-27 | 2003-01-21 | Microsoft Corporation | Cost based materialized view selection for query optimization |
CN107239541A (zh) * | 2017-06-02 | 2017-10-10 | 星环信息科技(上海)有限公司 | 一种代价估计的方法及设备 |
CN107885865A (zh) * | 2017-11-22 | 2018-04-06 | 星环信息科技(上海)有限公司 | 一种代价优化器与代价估计的方法及其设备 |
CN110502519A (zh) * | 2019-08-26 | 2019-11-26 | 北京启迪区块链科技发展有限公司 | 一种数据聚合的方法、装置、设备及存储介质 |
CN110688393A (zh) * | 2019-09-29 | 2020-01-14 | 星环信息科技(上海)有限公司 | 查询语句优化方法、装置、计算机设备及存储介质 |
CN113711197A (zh) * | 2019-09-25 | 2021-11-26 | 斯诺弗雷克公司 | 查询计划中自适应聚合操作符和属性的放置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11366806B2 (en) * | 2019-08-05 | 2022-06-21 | The SQLNet Company GmbH | Automated feature generation for machine learning application |
-
2021
- 2021-12-30 CN CN202111659306.4A patent/CN114328606B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6510422B1 (en) * | 2000-09-27 | 2003-01-21 | Microsoft Corporation | Cost based materialized view selection for query optimization |
CN107239541A (zh) * | 2017-06-02 | 2017-10-10 | 星环信息科技(上海)有限公司 | 一种代价估计的方法及设备 |
CN107885865A (zh) * | 2017-11-22 | 2018-04-06 | 星环信息科技(上海)有限公司 | 一种代价优化器与代价估计的方法及其设备 |
CN110502519A (zh) * | 2019-08-26 | 2019-11-26 | 北京启迪区块链科技发展有限公司 | 一种数据聚合的方法、装置、设备及存储介质 |
CN113711197A (zh) * | 2019-09-25 | 2021-11-26 | 斯诺弗雷克公司 | 查询计划中自适应聚合操作符和属性的放置 |
CN110688393A (zh) * | 2019-09-29 | 2020-01-14 | 星环信息科技(上海)有限公司 | 查询语句优化方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114328606A (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102627690B1 (ko) | Sql 질의 플랜들을 최적화하기 위한 차원 콘텍스트 전파 기술들 | |
US10204133B2 (en) | Optimizing update operations in in-memory database systems | |
US10678794B2 (en) | Skew detection and handling in a parallel processing relational database system | |
US10380269B2 (en) | Sideways information passing | |
US9563660B2 (en) | Coalescing operation for query processing | |
US9348874B2 (en) | Dynamic recreation of multidimensional analytical data | |
US10726006B2 (en) | Query optimization using propagated data distinctness | |
Elsayed et al. | Mapreduce: State-of-the-art and research directions | |
CN107239541B (zh) | 一种代价估计的方法及设备 | |
US11803550B2 (en) | Workload-aware column imprints | |
CN114328606B (zh) | Sql执行效率的提高方法、设备及存储介质 | |
CN115964374A (zh) | 一种基于预计算场景的查询处理方法及其装置 | |
US10776368B1 (en) | Deriving cardinality values from approximate quantile summaries | |
CN115905630A (zh) | 一种图数据库查询方法、装置、设备及存储介质 | |
US10997175B2 (en) | Method for predicate evaluation in relational database systems | |
KR101772333B1 (ko) | 이종 NoSQL 데이터베이스들간의 지능적 조인 전략 제공 방법 및 시스템 | |
US10235100B2 (en) | Optimizing column based database table compression | |
US10657126B2 (en) | Meta-join and meta-group-by indexes for big data | |
CN115658680A (zh) | 数据存储方法、数据查询方法和相关装置 | |
US20160004747A1 (en) | Join query execution method and device, and storage medium | |
US20170147707A1 (en) | Apparatus and method for managing graph data | |
US11822582B2 (en) | Metadata clustering | |
US20170322998A1 (en) | Information processing device, information processing method, and computer-readable storage medium | |
US11880366B2 (en) | Index-based, adaptive join size estimation | |
CN115033597A (zh) | 深度学习参与htap数据库执行sql优化的方法和系统 |
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 |