一种结构化查询语句优化方法、装置、设备及存储介质制造方法及图纸

技术编号:29526342 阅读:17 留言:0更新日期:2021-08-03 15:12
本发明专利技术公开了一种结构化查询语句优化方法、装置、设备及存储介质。该方法包括:获取查询项中包含去重语句的结构化查询SQL语句;确定多表连接项中包含的满足消除条件的待消除连接表;从所述多表连接项中消除所述待消除连接表,获得目标SQL语句。本发明专利技术在执行目标SQL语句时,减少了多表连接中数据表的数量,提高了查询效率,解决了多表连接产生笛卡尔积数据量过大,导致进行SQL查询时计算复杂耗能的问题,实现快速完成去重的效果。

【技术实现步骤摘要】
一种结构化查询语句优化方法、装置、设备及存储介质
本专利技术实施例涉及数据处理
,尤其涉及一种结构化查询语句优化方法、装置、设备及存储介质。
技术介绍
结构化查询语言(StructuredQueryLanguage,SQL),一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。在基于SQL语句的数据库操作中,多表连接是SQL语句中的常用的一项操作,在实际应用中,对于没有过滤条件的多表连接,首先需要将参与连接的数据表进行笛卡尔积计算,再在笛卡尔积计算结果中查询相应的数据结果。在数据表中的数据较多时,多表连接产生的笛卡尔积数据的数量就比较庞大,因此在笛卡尔积数据上再进行其他的SQL查询将会带来相应的性能损耗。
技术实现思路
本专利技术提供一种结构化查询语句优化方法、装置、设备及存储介质,以实现对查询项中包含去重语句的结构化查询SQL语句进行优化。第一方面,本专利技术实施例提供了一种结构化查询语句优化方法,包括:获取查询项中包含去重语句的结构化查询SQL语句;确定多表连接项中包含的满足消除条件的待消除连接表;从所述多表连接项中消除所述待消除连接表,获得目标SQL语句。可选的,所述确定多表连接项中包含的满足消除条件的待消除连接表,包括:当所述SQL语句仅包括查询项和多表连接项时,确定所述多表连接项中包含的连接数据表;如果各所述连接数据表之间不存在连接关系且各所述连接数据表非空,则遍历各所述连接数据表;当所述连接数据表满足设定的引用判定条件时,则将所述连接数据表确定为所述待消除连接表。可选的,所述连接数据表满足设定的引用判定条件的步骤包括:判定所述连接数据表是否在所述查询项的执行逻辑层中被引用;若否,则确定所述连接数据表满足引用判定条件。可选的,在获取查询项中包含去重语句的结构化查询SQL语句之后,还包括:对所述SQL语句进行语义解析,如果存在语义错误,则进行语义错误提示。第二方面,本专利技术实施例还提供了一种结构化查询语句优化装置,该装置包括:语句获取模块,用于获取查询项中包含去重语句的结构化查询SQL语句;消除确定模块,用于确定多表连接项中包含的满足消除条件的待消除连接表;语句确定模块,用于从所述多表连接项中消除所述待消除连接表,获得目标SQL语句。可选的,所述消除确定模块,包括:数据表确定单元,用于当所述SQL语句仅包括查询项和多表连接项时,确定所述多表连接项中包含的连接数据表;数据表遍历单元,用于如果各所述连接数据表之间不存在连接关系且各所述连接数据表非空,则遍历各所述连接数据表;消除表确定单元,用于当所述连接数据表满足设定的引用判定条件时,则将所述连接数据表确定为所述待消除连接表。可选的,所述连接数据表满足设定的引用判定条件的步骤包括:判定所述连接数据表是否在所述查询项的执行逻辑层中被引用;若否,则确定所述连接数据表满足引用判定条件。可选的,该装置还包括:语义解析模块,用于在获取查询项中包含去重语句的结构化查询SQL语句之后,对所述SQL语句进行语义解析,如果存在语义错误,则进行语义错误提示。第三方面,本专利技术实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本专利技术任意实施例所述的结构化查询语句优化方法。第四方面,本专利技术实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本专利技术任意实施例所述的结构化查询语句优化方法。本专利技术通过获取查询项中包含去重语句的结构化查询SQL语句,确定多表连接项中包含的满足消除条件的待消除连接表,从多表连接项中消除待消除连接表,获得目标SQL语句,在执行目标SQL语句时,减少了多表连接中数据表的数量,提高了查询效率,解决了多表连接产生笛卡尔积数据量过大,导致进行SQL查询时计算复杂耗能的问题,实现快速完成去重的效果。附图说明图1是本专利技术实施例一提供的一种结构化查询语句优化方法的流程图;图2是本专利技术实施例二提供的一种结构化查询语句优化装置的结构框图;图3是本专利技术实施例三提供的一种计算机设备的结构框图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构,此外,在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。实施例一图1为本专利技术实施例一提供的一种结构化查询语句优化方法的流程图,本实施例可适用于优化查询项中包含去重语句的结构化查询SQL语句的情况,该方法可以由结构化查询语句优化装置来执行,该装置可以通过软件和/或硬件实现。如图1所示,该方法具体包括如下步骤:步骤110、获取查询项中包含去重语句的SQL语句。一般情况下,对数据库中的数据进行操作都要先查询到相应的数据,因此,数据查询是数据库的核心操作,在数据库应用中往往采用SQL语句实现各种数据库操作,数据查询同样可以采用SQL语言实现,可以知道的是,SQL语句进行各种操作的前提是选择待操作的数据对象,而对数据操作对象的选择可以结合具体场景构建相应的SELECT语句来实现,在需要进行去重操作的场景中,所构建的SELECT语句需要包含用于去重实现的DISTINCT子句。在本实施例中,可以将SELECT语句中SELECT关键字与FROM关键字之间的部分称为查询项,将DISTINCT语句称为去重语句。具体的,本实施例为实现对包含去重语句的SQL语句进行优化,可以通过本步骤对当前已形成的SQL语句进行遍历,从而获得初始的包含DISTINCT语句的SQL语句。示例性的,下述给出了一个涉及去重语句应用场景的SQL语句,具体表示如下:SELECTDISTINCTT1.C1FROMT1,T2;在执行上述语句时,首先需要获取数据表T1和T2的结果集,然后计算两个结果集的笛卡尔积,之后获取该笛卡尔积中T1表的C1列的值,并对C1列的值进行DISTINCT计算,最后将计算结果输出。其中,对C1列的值进行DISTINCT计算即去掉C1列中重复的值。可选的,在步骤110之后,还可以包括:对SQL语句进行语义解析,如果存在语义错误,则进行语义错误提示。具体的,在获取到用户输入的SQL语句后,可以对SQL语句进行词法、语法、语义分析,若能成功得到分析结果且分析结果正确,则可进一步利用本实施例提供的结构化查询语句优化方法对该SQL语句进行优化,否则,可以进行语义错误提示,提示用户检查语法错误。步骤120、确定多表连接项中包含的满足消除条件的待消除连接表。在本实施例中,可以将FROM本文档来自技高网...

【技术保护点】
1.一种结构化查询语句优化方法,其特征在于,包括:/n获取查询项中包含去重语句的结构化查询SQL语句;/n确定多表连接项中包含的满足消除条件的待消除连接表;/n从所述多表连接项中消除所述待消除连接表,获得目标SQL语句。/n

【技术特征摘要】
1.一种结构化查询语句优化方法,其特征在于,包括:
获取查询项中包含去重语句的结构化查询SQL语句;
确定多表连接项中包含的满足消除条件的待消除连接表;
从所述多表连接项中消除所述待消除连接表,获得目标SQL语句。


2.根据权利要求1所述的结构化查询语句优化方法,其特征在于,所述确定多表连接项中包含的满足消除条件的待消除连接表,包括:
当所述SQL语句仅包括查询项和多表连接项时,确定所述多表连接项中包含的连接数据表;
如果各所述连接数据表之间不存在连接关系且各所述连接数据表非空,则遍历各所述连接数据表;
当所述连接数据表满足设定的引用判定条件时,则将所述连接数据表确定为所述待消除连接表。


3.根据权利要求2所述的结构化查询语句优化方法,其特征在于,所述连接数据表满足设定的引用判定条件的步骤包括:
判定所述连接数据表是否在所述查询项的执行逻辑层中被引用;
若否,则确定所述连接数据表满足引用判定条件。


4.根据权利要求1所述的结构化查询语句优化方法,其特征在于,在获取查询项中包含去重语句的结构化查询SQL语句之后,还包括:
对所述SQL语句进行语义解析,如果存在语义错误,则进行语义错误提示。


5.一种结构化查询语句优化装置,其特征在于,包括:
语句获取模块,用于获取查询项中包含去重语句的结构化查询SQL语句;
消除确定模块,用于确定多表连接项中包含的满足消除条件的待消除连接表;
语句确定模块,用于从所...

【专利技术属性】
技术研发人员:万伟朱仲颖韩朱忠
申请(专利权)人:上海达梦数据库有限公司
类型:发明
国别省市:上海;31

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

1