CN114936219A - 多表连接执行计划的选择方法、存储介质与计算机设备 - Google Patents
多表连接执行计划的选择方法、存储介质与计算机设备 Download PDFInfo
- Publication number
- CN114936219A CN114936219A CN202210583351.4A CN202210583351A CN114936219A CN 114936219 A CN114936219 A CN 114936219A CN 202210583351 A CN202210583351 A CN 202210583351A CN 114936219 A CN114936219 A CN 114936219A
- Authority
- CN
- China
- Prior art keywords
- connection
- materialized
- execution plan
- join
- identification
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种多表连接执行计划的选择方法、存储介质与计算机设备。其中上述方法包括:获取连接表的执行计划;确定连接表是否配置有物化连接标识;在连接表配置有物化连接标识的情况下,判断是否存在参与连接的任一子节点满足设定备选条件;若是,则将执行计划加入备选队列。本发明的方案,备选队列中的执行计划中连接表均可以满足指定的条件,排除了不满足条件的连接计划,从而可以保证最终选择出的执行计划具有更高的执行效率。
Description
技术领域
本发明涉及数据库技术,特别是涉及一种多表连接执行计划的选择方法、存储介质与计算机设备。
背景技术
连接查询是关系数据库中最主要的查询。连接是关系数据库模型的主要特点,也是其区别于其他类型数据库系统的一个标志。现有数据库对多个表的连接一般采用基于代价的方法选择连接顺序和连接方式。上述基于代价的连接选择方式,其准确性取决于对数据的抽样和代价计算的算法。
由于SQL(Structured Query Language,结构化查询语言)使用场景的复杂性,在连接选择方式对代价估算错误的情况下,数据库优化器可能选择一个执行效率很低的执行计划。在出现上述情况时,SQL的使用者如DBA(Database Administrator,数据库管理员)或SQL开发人员需要手动调整执行计划。然而,对于复杂的SQL语句,SQL的使用者无法对整个SQL制定最优的执行计划。
因此,现有连接选择方式,可能存在选择出执行效率很低的执行计划,而舍弃明显更优的其他执行计划的情况,影响了数据库的查询效率。
发明内容
本发明的一个目的是要提高多表连接执行计划的执行效率。
本发明一个进一步的目的是提高多表连接执行计划的选择算法的效率。
特别地,本发明提供了一种多表连接执行计划的选择方法,其包括:
获取连接表的执行计划;
确定连接表是否配置有物化连接标识;
在连接表配置有物化连接标识的情况下,判断是否存在参与连接的任一子节点满足设定备选条件;
若是,则将执行计划加入备选队列。
可选地,在获取连接表的执行计划的步骤之前还包括:
获取操作者设置的指定操作;
根据指定操作对参与多表连接操作的表设置物化连接标识。
可选地,根据指定操作对参与多表连接操作的表设置物化连接标识的步骤包括:
为指定操作所在的表设置物化连接标识;
利用递归算法对将具有物化连接标识的表作为左右节点的连接表设置物化连接标识。
可选地,利用递归算法对将具有物化连接标识的表作为左右节点的连接表设置物化连接标识的步骤包括:
获取需要进行标识设置的待设表;
判断待设表是否为连接表;
若是,判断待设表参与连接的左右节点所在表中的任一个是否具有物化连接标识;
在待设表参与连接的左右节点所在表中的任一个具有物化连接标识的情况下,为待设表设置物化连接标识。
可选地,设定备选条件包括:子节点所在表具有物化连接标识,并且在参与连接的任一子节点的所在表具有物化连接标识的情况下,判定满足设定备选条件。
可选地,在判断待设表参与连接的左右节点所在表中的任一个是否具有物化连接标识的步骤之后,在待设表参与连接的左右节点所在表均不具有物化连接标识的情况下,还包括:
判断待设表参与连接的左右节点的任一个是否为被控制的物化节点;
若是,为待设表设置物化连接标识,并且为被控制的物化节点的所在表设置物化通道标识。
可选地,设定备选条件包括:子节点所在表具有物化通道标识,并且在参与连接的任一子节点的所在表具有物化通道标识的情况下,判定满足设定备选条件。
可选地,在将执行计划加入备选队列之后还包括:
在多表连接的执行计划枚举完成后,根据备选队列内执行计划的执行代价选定最终执行计划。
根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的多表连接执行计划的选择方法。
根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的多表连接执行计划的选择方法。
本发明的多表连接执行计划的选择方法,对于连接表的执行计划,如果连接表配置有物化连接标识,并且参与连接表连接的任一子节点满足设定备选条件,则将执行计划加入备选队列。备选队列中的执行计划中连接表均可以满足指定的条件,排除了不满足条件的连接计划,从而可以保证最终选择出的执行计划具有更高的执行效率。另外由于上述形成备选队列的方式避免了枚举每一种连接计划以及并对每一种连接计划进行节点遍历,从而大大提高了算法效率。
进一步地,本发明的多表连接执行计划的选择方法,采用递归的方式对指定操作的表以及将该表作为子表的连接表设置物化连接标识,也即将指定操作所在的表设置物化连接标识之后,后续将把具有物化连接标识的表作为左右节点的连接表逐一设置物化连接标识。这种递归方式可以高效地实现对连接方式的指定。
更进一步地,本发明的多表连接执行计划的选择方法,还可以对被控制的物化节点的所在表设置物化通道标识,并为上一级的连接表设置物化连接标识。可以通过hint机制,配置参数等方式将指定连接从操作的子表定义为一个物化节点,作为被控制的物化节点,实现指定。
更进一步地,本发明的多表连接执行计划的选择方法,可以在数据库优化器由于代价估值的误差无法选择出最优的执行计划方案的情况下,数据库可以通过Hint机制、配置参数或其他方式为优化器指定局部执行计划,从而达到提高SQL执行效率的目的。对方案实施例的实际验证,可以大大提高执行效率,缩短执行时间。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1是连接可选的执行计划的枚举示意图;
图2是根据本发明一个实施例的多表连接执行计划的选择方法的示意图;
图3是根据本发明一个实施例的多表连接执行计划的选择方法中为连接表设置标识的流程图;
图4是根据本发明一个实施例的多表连接执行计划的选择方法中进行执行计划筛选的方法;
图5是根据本发明一个实施例的机器可读存储介质的示意图;以及
图6是根据本发明一个实施例的计算机设备的示意图。
具体实施方式
图1是连接可选的执行计划的枚举示意图,以t1,t2,t3三个表进行连接为例,其SQL语句为“select*from t1,t2,t3 where t1.id=t2.id and t1.id=t3.id”。其可能的连接方式包括:
a.t1连接t2,形成连接表t1,t2后,与t3连接,得到连接表t1,t2,t3;也即t1 joint2 join t3。
b.t3连接t2,形成连接表t3,t2后,与t1连接,得到连接表t1,t2,t3;也即t3 joint2 join t1。
c.t1连接连接表t3,t2,得到连接表t1,t2,t3,其中连接表t3,t2由t3连接t2得到;也即t1 join(t3 join t2)。
d.t1连接连接表t3,t2,得到连接表t1,t2,t3,其中连接表t3,t2由t2连接t3得到;也即t1 join(t2 join t3)。
e.t2连接连接表t1,t3,得到连接表t1,t2,t3,其中连接表t1,t3由t1连接t3得到;也即t2 join(t1 join t3)。
除了上述a至e的连接方式外,还可以进一步类推出其他的连接方式。一个简单的3表连接就可以产生如此多的连接执行计划,优化器很可能出现估算执行代价的误差,而将优选的方案舍弃,而选择一个执行效率很低的执行计划。例如如果DBA已经预先了解t2连接t3,采用嵌套循环的方式且结果物化是一种相对较优的方式,也即连接表t3,t2满足物化(material),那么仅在连接方式c以及连接方式d中具有该优选方式。本实施例的方法的目的就是保证已经明确执行效率更高连接方式c以及连接方式d能够保留在执行计划的备选队列中。
在本实施例的描述中,简单表为数据库中的表,子查询或视图;连接表为多个简单表的连接结果,如t1 join t2。优化器为数据库中为一个SQL生成最终执行计划的组件。执行计划为SQL的执行方式。一个SQL的执行方式有很多种,如一个表的扫描就包括全表扫描,索引扫描,位图扫描等多种方式。数据库优化器参与操作的单位为表。例如,一个基本表t1可以看作一个表,多个表的连接如t1 join t2也被看做一个表,一个子查询也被看做一个表。选择最优执行计划的过程是为每个表枚举所有的执行计划,然后将执行代价最小的计划作为该表的最终执行计划。
基于上述考虑,本实施例的方法的主要原理为:如果一个执行计划为指定操作(OPER1),则该操作所在的表(例A)只保留该执行计划;该指定操作所在的表(A)作为一个连接(表A&B)的子表时,该连接表一定满足指定条件;连接表(A&B)作为更高一级连接(A&B&C)的子表时,更高一级连接一定满足指定条件。
例如,当(A&B&C)由两个表(A&C)和B连接时一定不满足条件,此时所有为这种情况生成的执行计划都被丢弃。而当(A&B&C)由两个表(A&B)和C连接时一定满足条件,因为表(A&B)的所有执行计划都是满足条件的。
图2是根据本发明一个实施例的多表连接执行计划的选择方法的示意图,该多表连接执行计划的选择方法包括:
步骤S202,获取连接表的执行计划;
步骤S204,确定连接表是否配置有物化连接标识;
步骤S206,在连接表配置有物化连接标识的情况下,判断是否存在参与连接的任一子节点满足设定备选条件;
步骤S208,将执行计划加入备选队列。
物化连接标识materialjoin表明具有该标识的连接表存在一个子表满足提示Hint要求的物化节点。在了解连接表具有materialjoin标识的情况下,进一步判断该连接算法的参与连接的两个子表,子表满足备选条件,则将该连接方法加入备选队列。
在完成备选队列的枚举之后,最终可从备选队列中选取执行代价最低的作为最终的执行计划。也即在将执行计划加入备选队列之后还可以包括:在多表连接的执行计划枚举完成后,根据备选队列内执行计划的执行代价选定最终执行计划。
在步骤S202获取连接表的执行计划之前还可以包括:获取操作者设置的指定操作;根据指定操作对参与多表连接操作的表设置物化连接标识。其中设置materialjoin标识的过程可以采用递归方法,也即根据指定操作对参与多表连接操作的表设置物化连接标识的步骤可以包括:为指定操作所在的表设置物化连接标识;利用递归算法对将具有物化连接标识的表作为左右节点的连接表设置物化连接标识。
其中利用递归算法对将具有物化连接标识的表作为左右节点的连接表设置物化连接标识的步骤可以包括:获取需要进行标识设置的待设表;判断待设表是否为连接表;若是,判断待设表参与连接的左右节点所在表中的任一个是否具有物化连接标识;在待设表参与连接的左右节点所在表中的任一个具有物化连接标识的情况下,为待设表设置物化连接标识。
在判断待设表参与连接的左右节点所在表中的任一个是否具有物化连接标识的步骤之后,在待设表参与连接的左右节点所在表均不具有物化连接标识的情况下,还可以判断待设表参与连接的左右节点的任一个是否为被控制的物化节点;若是,为待设表设置物化连接标识,并且为被控制的物化节点的所在表设置物化通道标识。
在连接表配置有物化连接标识时,参与连接的任一子节点的备选条件可以包括:子节点所在表具有物化连接标识,或者子节点所在表具有物化通道标识。也就是说,在参与连接的任一子节点的所在表具有物化连接标识的情况下,可以判定满足设定备选条件;在参与连接的任一子节点的所在表具有物化通道标识的情况下,也判定满足设定备选条件。
上述实施例的多表连接执行计划的选择方法,如果连接表配置有物化连接标识,并且参与连接表连接的任一子节点满足设定备选条件,则将执行计划加入备选队列。备选队列中的执行计划中连接表均可以满足指定的条件,排除了不满足条件的连接计划,从而可以保证最终选择出的执行计划具有更高的执行效率。另外由于上述形成备选队列的方式避免了枚举每一种连接计划以及并对每一种连接计划进行节点遍历,从而大大提高了算法效率。
由于上述方法采用递归的方式对指定操作的表以及将该表作为子表的连接表设置物化连接标识,也即将指定操作所在的表设置物化连接标识之后,后续将把具有物化连接标识的表作为左右节点的连接表逐一设置物化连接标识。这种递归方式可以高效地实现对连接方式的指定。
图3是根据本发明一个实施例的多表连接执行计划的选择方法中为连接表设置标识的流程图。为了简化表述,图中,materialjoin标识简化为标识X,materialpath标识简化为标识Y。如图3所示在为一个表计算执行计划之前为其设置标识的流程可以包括:
步骤S302,判断待设表是否为连接操作的表;
步骤S304,判断待设表参与连接的左右节点所在表是否具有标识X;
步骤S306,为该待设表设置标识X;
步骤S308,判断待设表参与连接的左右节点所在表为指定的执行计划;
步骤S310,为待设表设置标识X,并为被控制的物化节点的所在表设置标识Y。
上述流程的一个具体应用实例可以为:数据库用户或者DBA指定对连接的表进行物化materialize时,可以定义一个新的物化提示materialize Hint。materialize Hint的实现过程可以为:如果需要设置的表(也即待设表)为连接表,如t1 join t2;识别该表的任一子表上是否有materialjoin标识。如果所有子表都没有materialjoin标识标识,则判断是否有子表满足materialize hint,也即判断参与连接的左右节点的任一个是否为被控制的物化节点。如果满足,则满足的子表设置materialpath标识,而连接表设materialjoin标识。
例如对于t1 join t2,如果t1 join t2表的两个子表t1,t2都没有materialjoin,但t2满足materialize(t2)hint的要求,则t2设置materialpath标识,t1 join t2设materialjoin标识。
又例如t1 join t2 join t3的两个子表中t1 join t2具有materialjoin标识,则t1 join t2 join t3有materialjoin标识。
在为每一个连接表枚举执行计划时,如果该连接表具有materialjoin标识,则说明该连接必有一个子表为Hint要求的物化节点。此时参与连接的两个子表表中满足具有或materialjoin标识或者materialpath标识,则将该连接的执行计划加入备选队列,从而最终从备选队列中选取执行代价最低的一个作为最终的执行计划。
图4是根据本发明一个实施例的多表连接执行计划的选择方法中进行执行计划筛选的方法,如图4所示,判断一条执行计划是否满足指定条件的步骤包括:
步骤S402,判断连接表是否具有标识X;
步骤S404,判断参与连接的左右节点所在表是否具有标识X;
步骤S406,判断参与连接的左右节点所在表是否具有标识Y;
步骤S408,将连接表的执行计划加入备选队列。
例如t1 join t2 join t3的连接可以按照连接顺序,连接算法,参与连接的子表三个维度进行划分。本实施例的方法以参与连接的子表来划分。参与连接的两个子表为(t1join t2)和t3时,如果子表(t1 join t2)满足条件,则无论连接算法为循环嵌套连接nestloop、排序合并连接mergejoin还是散列连接hashjoin,无论顺序为t3为左表还是右表,都满足条件。
参与连接的两个子表为(t1 join t3)和t2时,如果子表t2满足条件,则该连接方法满足条件。
如果hint不是materialize(t1),而是materialize(t1 t2),则要求对t1 join t2的结果进行物化。此时对t1 join t2 join t3来说,如果两个子表为(t1 join t2),t3则满足条件。如果子表为(t1 join t3),t2则不满足条件。
数据库的用户以及DAB指定执行计划的方式有很多种,如hint机制,配置参数等。指定连接操作的表为一个物化节点,可以通过以下方式定义提示hint。提示hint的定义可以为:物化hint名+要控制的表名。例如materialize(t1 t2)中,Materialize为hint名,t1、t2为表名或子查询名。
SQL的执行计划中有多种执行节点,最终组成一个树形的结构。本实施例的Hint可以控制执行节点中的任意一个节点(如基表,子查询,连接等),将该节点实现物化,即在该节点之上增加一个物化节点。
本实施例的方法主要的技术思路可以总结为:
在为一个连接表生成执行计划时,利用递归的方式判断该表是否存在指定的执行计划。也即首先对获取的连接操作的执行计划,判断其参与连接的计划的左右节点是否满足以下条件:该节点的操作为指定的操作;或者该节点所在的表为指定的表。当满足上述条件时,为连接表设置标识X(materialjoin标识),为满足条件的子节点所在的表设置标识Y(materialpath标识)。
通过递归,前期生成的连接表也可能为其他连接表的子节点的表。此时对于一个连接表,判断如果其子节点存所在的表存在X标识,则该表也设置X标识。这样避免了对每一种连接计划都要遍历所有节点并进行判断,从而提高了算法效率。
对于一个连接表,如果存在X标识,则代表该表一定要满足指定的条件。对该连接表生成的每一条执行计划,通过判断执行计划是否满足条件,如果满足条件,将该执行计划加入备选队列。判断的依据为:对于一条连接操作的执行计划,分别判断参与连接的连接子节点,如果该子节点满足以下两个条件中的一个,则符合条件:(1)该子节点所在的表有Y标识,且该子节点为执行的操作(2)该子节点所在的表有X标识。按照该规则,可以确定子节点的表中所有执行计划都是满足条件的执行计划。
本实施例方法针对数据库优化器由于代价估值的误差导致不能选择出最优的执行计划方案的问题。数据库可以通过Hint机制、配置参数或其他方式为优化器指定局部的执行计划。利用本发明提出的方法可以达到提高SQL执行效率的目的。
对本实施例方法进行验证的一个实际测试结果为:缺省情况下数据库优化器评估为对表a(一特定的测试表)进行全表扫描时,整个SQL的执行效率最高。然而在使用indexscan hint指定对表a进行索引扫描时,利用本实施例的算法规则,将对表a进行索引扫描的操作进行固定。也即在所有的执行计划中,包含对a进行索引扫描操作的计划被保留下来参与最终的竞争(加入备选队列),在备选队列至少存在一条有效执行计划的情况下,其他执行计划可被直接丢弃)。
通过运用本实施例的方法,整个执行计划中保留了对a进行索引扫描的操作。SQL的执行时间也从836毫秒降低到3毫秒。
本实施例还提供了一种机器可读存储介质和计算机设备。图5是根据本发明一个实施例的机器可读存储介质40的示意图,图6是根据本发明一个实施例的计算机设备50的示意图。
机器可读存储介质40其上存储有机器可执行程序41,机器可执行程序41被处理器执行时实现上述任一实施例的多表连接执行计划的选择方法。
计算机设备50可以包括存储器520、处理器510及存储在存储器520上并在处理器510上运行的机器可执行程序41,并且处理器510执行机器可执行程序41时实现上述任一实施例的多表连接执行计划的选择方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
就本实施例的描述而言,机器可读存储介质40可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质40甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。
计算机设备50可以是例如服务器、台式计算机、笔记本式计算机、平板计算机或智能手机。在一些示例中,计算机设备50可以是云计算节点。计算机设备50可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备50可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
计算机设备50可以包括适于执行存储的指令的处理器510、在操作期间为所述指令的操作提供临时存储空间的存储器520。处理器510可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器520可以包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储系统。
处理器510可以通过系统互连(例如PCI、PCI-Express等)连接到适于将计算机设备50连接到一个或多个I/O设备(输入/输出设备)的I/O接口(输入/输出接口)。I/O设备可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等等。I/O设备可以是计算机设备50的内置组件,或者可以是外部连接到计算设备的设备。
处理器510也可以通过系统互连链接到适于将计算机设备50连接到显示设备的显示接口。显示设备可以包括作为计算机设备50的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备50的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,NIC)可以适于通过系统互连将计算机设备50连接到网络。在一些实施例中,NIC可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(WAN))、局域网(LAN)或因特网等等。远程设备可以通过网络连接到计算设备。
本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
Claims (10)
1.一种多表连接执行计划的选择方法,包括:
获取连接表的执行计划;
确定所述连接表是否配置有物化连接标识;
在所述连接表配置有物化连接标识的情况下,判断是否存在参与连接的任一子节点满足设定备选条件;
若是,则将所述执行计划加入备选队列。
2.根据权利要求1所述的多表连接执行计划的选择方法,其中在所述获取连接表的执行计划的步骤之前还包括:
获取操作者设置的指定操作;
根据所述指定操作对参与所述多表连接操作的表设置所述物化连接标识。
3.根据权利要求2所述的多表连接执行计划的选择方法,其中所述根据所述指定操作对参与所述多表连接操作的表设置所述物化连接标识的步骤包括:
为所述指定操作所在的表设置所述物化连接标识;
利用递归算法对将具有所述物化连接标识的表作为左右节点的连接表设置所述物化连接标识。
4.根据权利要求3所述的多表连接执行计划的选择方法,其中所述利用递归算法对将具有所述物化连接标识的表作为左右节点的连接表设置所述物化连接标识的步骤包括:
获取需要进行标识设置的待设表;
判断所述待设表是否为连接表;
若是,判断所述待设表参与连接的左右节点所在表中的任一个是否具有所述物化连接标识;
在所述待设表参与连接的左右节点所在表中的任一个具有所述物化连接标识的情况下,为所述待设表设置所述物化连接标识。
5.根据权利要求4所述的多表连接执行计划的选择方法,其中,
所述设定备选条件包括:子节点所在表具有所述物化连接标识,并且
在所述参与连接的任一子节点的所在表具有所述物化连接标识的情况下,判定满足所述设定备选条件。
6.根据权利要求4所述的多表连接执行计划的选择方法,其中,在所述判断所述待设表参与连接的左右节点所在表中的任一个是否具有所述物化连接标识的步骤之后,在所述待设表参与连接的左右节点所在表均不具有所述物化连接标识的情况下,还包括:
判断所述待设表参与连接的左右节点的任一个是否为被控制的物化节点;
若是,为所述待设表设置所述物化连接标识,并且为所述被控制的物化节点的所在表设置物化通道标识。
7.根据权利要求6所述的多表连接执行计划的选择方法,其中,
所述设定备选条件包括:子节点所在表具有所述物化通道标识,并且
在所述参与连接的任一子节点的所在表具有所述物化通道标识的情况下,判定满足所述设定备选条件。
8.根据权利要求1所述的多表连接执行计划的选择方法,其中,在将所述执行计划加入备选队列之后还包括:
在所述多表连接的执行计划枚举完成后,根据所述备选队列内执行计划的执行代价选定最终执行计划。
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的多表连接执行计划的选择方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的多表连接执行计划的选择方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210583351.4A CN114936219A (zh) | 2022-05-25 | 2022-05-25 | 多表连接执行计划的选择方法、存储介质与计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210583351.4A CN114936219A (zh) | 2022-05-25 | 2022-05-25 | 多表连接执行计划的选择方法、存储介质与计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114936219A true CN114936219A (zh) | 2022-08-23 |
Family
ID=82864505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210583351.4A Pending CN114936219A (zh) | 2022-05-25 | 2022-05-25 | 多表连接执行计划的选择方法、存储介质与计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114936219A (zh) |
-
2022
- 2022-05-25 CN CN202210583351.4A patent/CN114936219A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9767150B2 (en) | System and method for processing database queries | |
US10133778B2 (en) | Query optimization using join cardinality | |
CN110292775B (zh) | 获取差异数据的方法及装置 | |
US7475056B2 (en) | Query processing in a parallel single cursor model on multi-instance configurations, using hints | |
CN111708804B (zh) | 数据处理方法、装置、设备及介质 | |
CN110688393B (zh) | 查询语句优化方法、装置、计算机设备及存储介质 | |
CN110399368B (zh) | 一种定制数据表的方法、数据操作方法及装置 | |
CN109871470B (zh) | 一种电网设备数据标签化管理系统及实现方法 | |
CN113434482A (zh) | 数据迁移方法、装置、计算机设备及存储介质 | |
CN108062314B (zh) | 动态分表数据处理方法和装置 | |
CN107102995B (zh) | 一种sql执行计划的确定方法及装置 | |
US7707211B2 (en) | Information management system and method | |
CN114090695A (zh) | 分布式数据库的查询优化的方法和装置 | |
CN111125199A (zh) | 一种数据库访问方法、装置及电子设备 | |
CN110175202A (zh) | 用于数据库的表的外连接的方法和系统 | |
CN115455057A (zh) | 数据库连接操作的执行方法、存储介质与计算机设备 | |
US8832157B1 (en) | System, method, and computer-readable medium that facilitates efficient processing of distinct counts on several columns in a parallel processing system | |
CN114936219A (zh) | 多表连接执行计划的选择方法、存储介质与计算机设备 | |
CN116467310A (zh) | 无效索引的无锁标记方法、存储介质和计算机设备 | |
CN116610697A (zh) | 数据库查询语句的查询方法、存储介质及设备 | |
CN107562872B (zh) | 基于sql的度量空间数据相似度查询方法及装置 | |
CN115048409A (zh) | 数据库连接操作的执行方法、存储介质与计算机设备 | |
CN115934760A (zh) | 数据库查询语句的优化方法、存储介质与计算机设备 | |
CN116483831A (zh) | 一种分布式数据库推荐索引生成方法 | |
CN114969046A (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 |