【技术实现步骤摘要】
数据库SQL语句优化方法、装置、设备及存储介质
本专利技术实施例涉及数据处理
,尤其涉及数据库结构化查询语言(StructuredQueryLanguage,SQL)语句优化方法、装置、设备及存储介质。
技术介绍
SQL语句是最重要也是最常用的关系数据库操作语言。分组(GROUPBY)子句是SQL标准中用于对数据进行分组处理的子句。在当前通用的数据库技术中,为了实现一个包含GROUPBY子句的SQL语句,不管该SQL语句所对应的表结构和数据特征如何,都需要将表中的数据取出来,按照GROUPBY指定的分组项来计算分组。但是,在某些特定情况下,这些GROUPBY分组是重复多余的且数据量很大,这导致SQL语句的执行效率较低。
技术实现思路
本专利技术提供一种数据库SQL语句优化方法、装置、设备及存储介质,以解决目前的数据库SQL语句执行效率低的技术问题。第一方面,本专利技术实施例提供一种数据库SQL语句优化方法,包括:确定目标SQL语句是否为待优化的SQL语句;其中,所述目 ...
【技术保护点】
1.一种数据库结构化查询语言SQL语句优化方法,其特征在于,包括:/n确定目标SQL语句是否为待优化的SQL语句;其中,所述目标SQL语句包括派生表内的内层查询语句以及所述派生表外的外层查询语句,所述内层查询语句及所述外层查询语句均包括GROUP BY子句;/n当确定所述目标SQL语句为待优化的SQL语句时,根据所述内层查询语句的查询项与所述派生表的列的对应关系,消除所述内层查询语句中的GROUP BY子句,获取优化后的目标SQL语句。/n
【技术特征摘要】
1.一种数据库结构化查询语言SQL语句优化方法,其特征在于,包括:
确定目标SQL语句是否为待优化的SQL语句;其中,所述目标SQL语句包括派生表内的内层查询语句以及所述派生表外的外层查询语句,所述内层查询语句及所述外层查询语句均包括GROUPBY子句;
当确定所述目标SQL语句为待优化的SQL语句时,根据所述内层查询语句的查询项与所述派生表的列的对应关系,消除所述内层查询语句中的GROUPBY子句,获取优化后的目标SQL语句。
2.根据权利要求1所述的方法,其特征在于,所述确定目标SQL语句是否为待优化的SQL语句,包括:
当判断所述目标SQL语句满足预设的优化条件时,确定所述目标SQL语句为待优化的SQL语句;其中,所述优化条件包括以下子条件:所述外层查询语句中没有where过滤条件,所述外层查询语句的FROM项为所述派生表,所述外层查询语句中的GROUPBY子句的分组项是所述内层查询语句中的GROUPBY子句的分组项的子集,以及,所述外层查询语句中的集函数的属性满足预设集函数属性条件。
3.根据权利要求2所述的方法,其特征在于,所述预设集函数属性条件包括:
所述外层查询语句中的集函数的类型为预设集函数类型;
所述外层查询语句中的集函数的参数为常量和/或所述派生表的列;以及,
若所述外层查询语句中的集函数的参数为所述派生表的列且所述派生表的列对应的所述派生表的查询项为集函数,并且,所述外层查询语句中的GROUPBY子句的分组项少于所述内层查询语句中的GROUPBY子句的分组项,则所述外层查询语句中的集函数的类型与对应的所述派生表的查询项中的集函数的类型相同;
若所述外层查询语句中的集函数的参数为常量,和/或,所述外层查询语句中的集函数的参数为所述派生表的列且所述派生表的列对应的所述派生表的查询项不为集函数,并且,所述外层查询语句中的GROUPBY子句的分组项少于所述内层查询语句中的GROUPBY子句的分组项,则所述外层查询语句中的集函数的类型为所述预设集函数类型中的预设集函数子类型。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述根据所述内层查询语句的查询项与所述派生表的列的对应关系,消除所述内层查询语句中的GROUPBY子句,获取优化后的目标SQL语句,包括:
确定所述内层查询语句的查询项,以及,所述派生表的列之间的映射关系;
根据所述映射关系,消除所述内层查询语句中的GROUPBY子句,获取优化后的目标SQL语句。
5.根据权利要求4所述的方法,其特征在于,所述根据所述映射关系,消除所述内层查询语句中的GROUPBY子句,获取优化后的目标SQL语句,包括:
当确定所述外层查询语句中的查询项为待替换的查询项时,根据所述映射关系,对所述外层查询语句中的待替换的查询项进行替换,获取替换后的查询项;
将所述外层查询语句的FROM项,替换为所述内层查询语句中FROM项,获取替换后的FROM项;
根据所述替换后的查询项以及所述替换后的FROM项,生成所述优化后的目标SQL语句。
6.根据权利要求5所述的方法,其特征在于,所述根据所述替换后...
【专利技术属性】
技术研发人员:朱仲颖,刘志勇,韩朱忠,
申请(专利权)人:上海达梦数据库有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。