数据库查询语句的优化方法、存储介质与设备技术

技术编号:37746741 阅读:14 留言:0更新日期:2023-06-05 23:33
本发明专利技术提供了一种数据库查询语句的优化方法、存储介质与设备。其中上述方法包括:获取数据库查询语句的查询树;判断查询树中是否包含相关标量子查询;若是,则将相关标量子查询转换为等价的外连接查询。通过此方法,将数据库查询语句中相关标量子查询转换为等价的外连接查询,使得数据库优化器可以有更多的访问路径、连接方式、连接顺序的选择,最终提升性能。能。能。

【技术实现步骤摘要】
数据库查询语句的优化方法、存储介质与设备


[0001]本专利技术涉及数据库技术,特别是涉及一种数据库查询语句的优化方法、存储介质与设备。

技术介绍

[0002]在现有技术中,对于标量子查询的定义为子查询返回的是单一值的标量。一种数据库查询语句的具体示例如:
[0003]select stu.id,(select te.name from te where te.id=stu.tid)from stu;
[0004]其中,select te.name from te where te.id=stu.tid为标量子查询,但在此数据库查询语句的执行过程中,每读取一条stu表中的数据时,标量子查询便会执行一次,即标量子查询的执行次数取决于目标表中数据的数量,导致数据库执行效率低下。

技术实现思路

[0005]本专利技术的一个目的是提升数据库查询语句的执行效率。
[0006]本专利技术一个进一步的目的是消除数据库查询语句中的相关标量子查询。
[0007]本专利技术一个进一步的目的是将符合优化条件的数据库查询语句中的相关标量子查询转换为外连接。
[0008]特别地,本专利技术提供了一种数据库查询语句的优化方法,其包括:
[0009]获取数据库查询语句的查询树;
[0010]判断查询树中是否包含相关标量子查询;
[0011]若是,则将相关标量子查询转换为等价的外连接查询。
[0012]可选地,将相关标量子查询转换为等价的外连接查询的步骤包括:<br/>[0013]将相关标量子查询的SELECT列表中的目标列添加到父查询语句的目标列中。
[0014]可选地,将所述相关标量子查询的SELECT列表中的目标列添加到父查询语句的目标列中的步骤之后包括:
[0015]将相关标量子查询移到父查询语句的From关键词之后。
[0016]可选地,将相关标量子查询移到父查询语句的From关键词之后的步骤之后包括:
[0017]判断相关标量子查询目标列中是否含有聚合操作。
[0018]可选地,判断相关标量子查询目标列中是否含有聚合操作的步骤之后包括:
[0019]若相关标量子查询目标列中含有聚合操作,则引入Group By操作。
[0020]可选地,引入Group By操作的步骤之后包括:
[0021]移除相关标量子查询;
[0022]引入外连接,并添加连接谓词。
[0023]可选地,判断相关标量子查询目标列中是否含有聚合操作的步骤之后包括:
[0024]若相关标量子查询目标列中不含有聚合操作,则移除相关标量子查询。
[0025]可选地,移除相关标量子查询的步骤之后包括:
[0026]引入外连接,并添加连接谓词。
[0027]根据本专利技术的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的数据库查询语句的优化方法。
[0028]根据本专利技术的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的数据库查询语句的优化方法。
[0029]本专利技术的数据库查询语句的优化方法,获取数据库查询语句的查询树;判断查询树中是否包含相关标量子查询;若是,则将标量子查询转换为等价的外连接查询。通过此方法能够在不影响数据库查询语句的结果的前提下,将相关标量子查询转换为等价的外连接查询,从而使数据库执行数据库查询语句时有更多的访问路径、连接方式、连接顺序的选择,提升数据库查询语句的执行效率。
[0030]进一步地,本专利技术的数据库查询语句的优化方法,在对数据库查询语句进行优化时,首先将数据库查询语句中相关标量子查询的SELECT列表中的目标列添加到父查询的目标列中;随后将该相关标量子查询移到父查询语句的From关键词之后;接着判断相关标量子查询目标列中是否含有聚合操作,若含有聚合操作,则引入Group By操作;在相关标量子查询目标列中不含有聚合操作或引入Group By操作之后,移除原来的相关标量子查询,引入外连接,并添加连接谓词。通过此方法,将数据库查询语句中相关标量子查询转换为等价的外连接查询,使得数据库优化器可以有更多的访问路径、连接方式、连接顺序的选择,最终提升性能。
[0031]根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。
附图说明
[0032]后文将参照附图以示例性而非限制性的方式详细描述本专利技术的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
[0033]图1是根据本专利技术一个实施例的数据库查询语句的优化方法的流程示意图;
[0034]图2是根据本专利技术另一个实施例的数据库查询语句的优化方法的流程示意图;
[0035]图3是根据本专利技术一个实施例的数据库查询语句的优化方法中机器可读存储介质的示意图;以及
[0036]图4是根据本专利技术一个实施例的数据库查询语句的优化方法中计算机设备的示意图。
具体实施方式
[0037]本领域技术人员应当理解的是,下文所描述的实施例仅仅是本专利技术的一部分实施例,而不是本专利技术的全部实施例,该一部分实施例旨在用于解释本专利技术的技术原理,并非用于限制本专利技术的保护范围。基于本专利技术提供的实施例,本领域普通技术人员在没有付出创造性劳动的情况下所获得的其它所有实施例,仍应落入到本专利技术的保护范围之内。
[0038]在现有技术中,对于标量子查询的定义为子查询返回的是单一值的标量。一种数据库查询语句的具体示例如:
[0039]select stu.id,(select te.name from te where te.id=stu.tid)from stu;
[0040]其中,select te.name from te where te.id=stu.tid为标量子查询,但在此数据库查询语句的执行过程中,每读取一条stu表中的数据时,标量子查询便会执行一次,即标量子查询的执行次数取决于目标表中数据的数量,导致数据库执行效率低下。
[0041]为了解决上述问题,本方案通过将相关标量子查询转换为等价的外连接查询,使得数据库优化器可以有更多的访问路径、连接方式、连接顺序的选择,最终提升性能。
[0042]图1是根据本专利技术一个实施例的数据库查询语句的优化方法的流程示意图。该流程可以包括:
[0043]步骤S101,获取数据库查询语句的查询树。所谓查询树是数据库在接收到数据库查询语句时,分析该数据库查询语句从而生成的执行计划树。
[0044]步骤S102,判断查询树中是否包含相关标量子查询。其中,所谓相关标量子查询是指该数据库查询语句内部存在标量子查询,且该标量子查询的约束条件与该本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库查询语句的优化方法,包括:获取所述数据库查询语句的查询树;判断所述查询树中是否包含相关标量子查询;若是,则将所述相关标量子查询转换为等价的外连接查询。2.根据权利要求1所述的数据库查询语句的优化方法,其中,所述将所述相关标量子查询转换为等价的外连接查询的步骤包括:将所述相关标量子查询的SELECT列表中的目标列添加到父查询语句的目标列中。3.根据权利要求2所述的数据库查询语句的优化方法,其中,所述将所述相关标量子查询的SELECT列表中的目标列添加到父查询语句的目标列中的步骤之后包括:将所述相关标量子查询移到所述父查询语句的From关键词之后。4.根据权利要求3所述的数据库查询语句的优化方法,其中,所述将所述相关标量子查询移到所述父查询语句的From关键词之后的步骤之后包括:判断所述相关标量子查询目标列中是否含有聚合操作。5.根据权利要求4所述的数据库查询语句的优化方法,其中,所述判断所述相关标量子查询目标列中是否含有聚合操作的步骤之后包括:若所述相关标量子...

【专利技术属性】
技术研发人员:徐登峰尹强
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1