查询语句优化方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:23099217 阅读:20 留言:0更新日期:2020-01-14 20:37
本发明专利技术实施例公开了一种查询语句优化方法、装置、计算机设备及存储介质。所述方法包括在检测到查询优化请求时,获取所述查询优化请求指向的待处理查询,所述待处理查询中包括多个子查询;采用预设的查询优化规则,逐级对所述待处理查询中包括的满足查询优化条件的子查询组进行优化处理,得到与所述待处理查询对应的备选优化查询,所述子查询组中包括至少两个子查询;分别对所述待处理查询和所述备选优化查询进行代价评估;如果确定所述备选优化查询的代价评估结果优于所述待处理查询的代价评估结果,则将所述备选优化查询作为所述待处理查询的优化结果。本发明专利技术实施例可以优化查询,提高查询效率,降低查询成本,极大的提升查询性能。

Query optimization methods, devices, computer equipment and storage media

【技术实现步骤摘要】
查询语句优化方法、装置、计算机设备及存储介质
本专利技术实施例涉及数据库查询领域,尤其涉及一种查询语句优化方法、装置、计算机设备及存储介质。
技术介绍
数据库可以提供数据查询功能。随着大数据时代的到来,数据库中存储的数据越来越多,查询占用的资源也越来越多。在数据库查询中,可以通过在一个查询中嵌套多个子查询实现更多查询和计算功能,直接得到最终需要的结果。但在一个包含多个子查询的查询中,不同子查询实际上做了部分重叠的工作,这些工作例如是指该查询中存在重复的扫表工作或者是重复的计算工作。通常,这些重复的计算和扫表通常会占用更多的资源,导致查询的整体性能下降。特别是在大数据场景中,子查询中会包含大量连接(join)和/或聚合等,导致子查询非常耗时。甚至在一些复杂的分析型场景中,经常存在部分子查询或全部子查询都是重复计算。目前,可以使用withas语句优化查询,withas语句是将用到的子查询的查询结果事先提取出来存入临时表,使整个查询当中的所有模块都可以调用该查询结果,可以避免对相同子查询的重复计算工作。但该方法缺点是需要手动改写查询语句,无法自动识别和生成;而且由于withas使用临时表进行存储,同样占用资源,从而不能保证withas一定提升查询性能。
技术实现思路
本专利技术实施例提供了一种查询语句优化方法、装置、计算机设备及存储介质,可以优化查询,提高查询效率,降低查询成本,极大的提升查询性能。第一方面,本专利技术实施例提供了一种查询语句优化方法,包括:在检测到查询优化请求时,获取所述查询优化请求指向的待处理查询,所述待处理查询中包括多个子查询;采用预设的查询优化规则,逐级对所述待处理查询中包括的满足查询优化条件的子查询组进行优化处理,得到与所述待处理查询对应的备选优化查询,所述子查询组中包括至少两个子查询;分别对所述待处理查询和所述备选优化查询进行代价评估;如果将所述备选优化查询的代价评估结果与所述待处理查询的代价评估结果进行比较,确定所述备选优化查询的代价评估结果优于所述待处理查询的代价评估结果,则将所述备选优化查询作为所述待处理查询的优化结果,以使所述备选优化查询替换所述待处理查询进行数据查询。第二方面,本专利技术实施例提供了一种查询语句优化装置,包括:待处理查询获取模块,用于在检测到查询优化请求时,获取所述查询优化请求指向的待处理查询,所述待处理查询中包括多个子查询;待处理查询逐级优化模块,用于采用预设的查询优化规则,逐级对所述待处理查询中包括的满足查询优化条件的子查询组进行优化处理,得到与所述待处理查询对应的备选优化查询,所述子查询组中包括至少两个子查询;优化代价评估模块,用于分别对所述待处理查询和所述备选优化查询进行代价评估;优化替换模块,用于如果将所述备选优化查询的代价评估结果与所述待处理查询的代价评估结果进行比较,确定所述备选优化查询的代价评估结果优于所述待处理查询的代价评估结果,则将所述备选优化查询作为所述待处理查询的优化结果,以使所述备选优化查询替换所述待处理查询进行数据查询。第三方面,本专利技术实施例还提供了一种计算机设备包括处理器和存储器,所述存储器用于存储指令,当所述指令执行时使得所述处理器执行以下操作:在检测到查询优化请求时,获取所述查询优化请求指向的待处理查询,所述待处理查询中包括多个子查询;采用预设的查询优化规则,逐级对所述待处理查询中包括的满足查询优化条件的子查询组进行优化处理,得到与所述待处理查询对应的备选优化查询,所述子查询组中包括至少两个子查询;分别对所述待处理查询和所述备选优化查询进行代价评估;如果将所述备选优化查询的代价评估结果与所述待处理查询的代价评估结果进行比较,确定所述备选优化查询的代价评估结果优于所述待处理查询的代价评估结果,则将所述备选优化查询作为所述待处理查询的优化结果,以使所述备选优化查询替换所述待处理查询进行数据查询。第四方面,本专利技术实施例还提供了一种存储介质,存储介质用于存储指令,指令用于执行:在检测到查询优化请求时,获取所述查询优化请求指向的待处理查询,所述待处理查询中包括多个子查询;采用预设的查询优化规则,逐级对所述待处理查询中包括的满足查询优化条件的子查询组进行优化处理,得到与所述待处理查询对应的备选优化查询,所述子查询组中包括至少两个子查询;分别对所述待处理查询和所述备选优化查询进行代价评估;如果将所述备选优化查询的代价评估结果与所述待处理查询的代价评估结果进行比较,确定所述备选优化查询的代价评估结果优于所述待处理查询的代价评估结果,则将所述备选优化查询作为所述待处理查询的优化结果,以使所述备选优化查询替换所述待处理查询进行数据查询。本专利技术实施例通过对子查询进行逐级优化,生成备选优化查询,实现自动优化查询,并在备选优化查询的代价优于待处理查询的代价时,备选优化查询替换待处理查询进行数据查询,实现评估优化后的查询性能,以及在查询性能提高时使用备选优化查询,解决了现有技术中人工改写查询语句而且无法保证改写后的查询一定能提升查询性能的问题,可以实现减少人工成本,提高查询优化效率,同时还可以保留真正提升查询性能的备选优化查询,提高查询优化的质量。附图说明图1a是本专利技术实施例一中的一种查询语句优化方法的流程图;图1b是本专利技术实施例一中的一种查询语句优化方法的流程图;图2是本专利技术实施例二中的一种查询语句优化方法的流程图;图3a是本专利技术实施例三中的一种查询语句优化方法的流程图;图3b是本专利技术实施例三中的一种查询语句优化方法的流程图;图4是本专利技术实施例四中的一种查询语句优化装置的结构示意图;图5是本专利技术实施例五中的一种计算机设备的结构示意图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。为了便于理解,优先对本专利技术实施例中的技术术语进行说明:其中,查询用于在数据库中获取需要的数据,具体可以包括多个子查询,每个子查询均包括查询内容、查询数据表以及数据过滤条件等。其中,查询内容用于作为查询依据从数据库中进行查询,示例性的,查询内容包括查询的字段和/或别名等。查询数据表用于存储数据,并作为查询范围,查询实际是在查询数据表中进行查询。数据过滤条件用于作为查询条件筛选查询数据,示例性的,数据过滤条件为年龄小于20的男人。示例性的,一个子查询如下所示:SELECTc_name(查询内容)FROMtable_c(查询数据表名)WHEREc_age<20(数据过滤条件)具体的,该子查询用于在查询数据表table_c中查询符合年龄小于20(c_age<20)的人的姓名c_name。查询优化规则用于识别本文档来自技高网...

【技术保护点】
1.一种查询语句优化方法,其特征在于,包括:/n在检测到查询优化请求时,获取所述查询优化请求指向的待处理查询,所述待处理查询中包括多个子查询;/n采用预设的查询优化规则,逐级对所述待处理查询中包括的满足查询优化条件的子查询组进行优化处理,得到与所述待处理查询对应的备选优化查询,所述子查询组中包括至少两个子查询;/n分别对所述待处理查询和所述备选优化查询进行代价评估;/n如果将所述备选优化查询的代价评估结果与所述待处理查询的代价评估结果进行比较,确定所述备选优化查询的代价评估结果优于所述待处理查询的代价评估结果,则将所述备选优化查询作为所述待处理查询的优化结果,以使所述备选优化查询替换所述待处理查询进行数据查询。/n

【技术特征摘要】
1.一种查询语句优化方法,其特征在于,包括:
在检测到查询优化请求时,获取所述查询优化请求指向的待处理查询,所述待处理查询中包括多个子查询;
采用预设的查询优化规则,逐级对所述待处理查询中包括的满足查询优化条件的子查询组进行优化处理,得到与所述待处理查询对应的备选优化查询,所述子查询组中包括至少两个子查询;
分别对所述待处理查询和所述备选优化查询进行代价评估;
如果将所述备选优化查询的代价评估结果与所述待处理查询的代价评估结果进行比较,确定所述备选优化查询的代价评估结果优于所述待处理查询的代价评估结果,则将所述备选优化查询作为所述待处理查询的优化结果,以使所述备选优化查询替换所述待处理查询进行数据查询。


2.根据权利要求1所述的方法,其特征在于,所述采用预设的查询优化规则,逐级对所述待处理查询中包括的满足查询优化条件的子查询组进行优化处理,得到与所述待处理查询对应的备选优化查询,包括:
判断所述待处理查询中是否包括满足查询优化条件的至少一个子查询组;
若是,则根据子查询组所满足的查询优化条件对所述至少一个子查询组进行优化处理,得到新的子查询;
根据所述新的子查询更新所述待处理查询后,返回执行判断所述待处理查询中是否包括满足查询优化条件的至少一个子查询组的操作,直至满足结束优化条件;
将最近一次更新的所述待处理查询,作为所述备选优化查询。


3.根据权利要求2所述的方法,其特征在于,所述判断所述待处理查询中是否包括满足查询优化条件的至少一个子查询组,包括:
对所述待处理查询中各个子查询进行查询语句的解析,得到与各所述子查询分别对应的比对参数集合、非幂等调用方法的包含属性以及聚合函数的归约属性,所述比对参数集合中包括:列参数属性、查询数据表属性以及数据过滤条件;
如果至少两个第一目标子查询的比对参数集合之间仅列参数属性不同,且各所述第一目标子查询的非幂等调用方法的包含属性均为否,则将所述至少两个第一目标子查询加入至满足重复查询优化条件的子查询组中;
如果至少两个第二目标子查询的比对参数集合中查询数据表属性相同,列参数属性相同或不全相同,数据过滤条件不同,且每个所述第二目标子查询包括的聚合函数的归约属性为是,则将所述至少两个第二目标子查询加入至满足分段查询优化条件的子查询组中。


4.根据权利要求3所述的方法,其特征在于,所述根据子查询组所满足的查询优化条件对所述至少一个子查询组进行优化处理,得到新的子查询,包括:
在每个所述满足重复查询优化条件的子查询组中,按照列参数属性,将包括的至少两个第一目标子查询进行合并,得到新的子查询;和/或
在每个所述满足分段查询优化条件的子查询组中,按照所述满足分段查询优化条件的子查询组匹配的数据过滤条件,将包括的至少两个第二目标子查询进行合并,并确定每个所述第二目标子查询的聚合函数关联的至少一个归约函数,生成公共子查询,以及指定所述公共子查询的查询结果的存储地址;
根据每个所述第二目标子查询的列参数属性包括的聚合函数与所述公共子查询中关联的至少一个所述归约函数的计算关系,所述数据过滤条件以及所述存储地址,生成所述第二目标子查询匹配的优化子查询;
将所述公共子查询与至少一个所述优化子查询均作为新的子查询。


5.根据权利要求1所述的方法,其特征在于,所述对所述备选优化查询进行代价评估,包括:
计算所述备选优化查询中各子查询执行的第一代价评估值;
计算所述备选优化查询的子查询结果存储的第二代价评估值;
计算所述备选优化查询中子查询补充修改的第三代价评估值;
将所述第一代价评估值、所述第二代价评估值和所述第三代价评估值的相加结果作为所述备选优化查询的修改代价评估值。


6.根据权利要求5所述的方法,其特征在于,所述确定所述备选优化查询的代价评估结果优于所述待处理查询的代价评估结果,包括:
当所述待处理查询的初始代价评估值与预设调整系数的乘积大于所述备选优化查询的修改代价评估值时,确定所述备选优化查询的代价评估结果优于所述待处理查询的代价评估结果。


7.根据权利要求1所述的方法,其特征在于,在确定所述备选优化查询的代价评估结果优于所述待处理查询的代价评估结果之前,还包括:
根据历史待处理查询的初始代价评估值、历史备选优化查询的修改代价评估值、历史待处理查询的初始运行时间和历史备选优化查询的修改运行时间,修正所述预设调整系数。


8.一种计算机设备,包括处理器和存储器,所述存...

【专利技术属性】
技术研发人员:张弘毅陈振强熊仲健靳峥
申请(专利权)人:星环信息科技上海有限公司
类型:发明
国别省市:上海;31

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

1