【技术实现步骤摘要】
结构化查询语句优化方法、装置、电子设备及介质
[0001]本专利技术实施例涉及数据库
,尤其涉及一种结构化查询语句优化方法、装置、电子设备及介质。
技术介绍
[0002]结构化查询语句(Structured Query Language,SQL),也可称为SQL语句,是一种数据库查询和程序设计语言,也可以指一种关系数据库操作语言;其可用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
[0003]目前,在当前通用的数据库技术中,为了实现一个包含GROUP BY子句的SQL语句,其中,GROUP BY子句,也可以称为分组子句,是指在SQL语句中用于对数据进行分组处理的子句,需要将数据库的表中的数据取出来,按照GROUP BY子句所指定的每个分组列来计算分组。但是,在某些情况下,实现一个包含GROUP BY子句的SQL语句无需用到GROUP BY子句中的所有分组列,此时若还是按照GROUP BY子句所指定的每个分组列来计算分组,就会增大计算量,从而降低SQL语句的执行效率。
[ ...
【技术保护点】
【技术特征摘要】
1.一种结构化查询语句优化方法,其特征在于,所述方法包括:对于分组子句中包含多个分组列的目标结构化查询语句,创建初始链表;确定所述分组子句中属于特征列的分组列,并将所述属于特征列的分组列中满足预设条件的目标分组列和所述目标分组列所属表添加至所述初始链表中,构建成目标链表,其中,所述目标链表中的每个节点用于存储一个目标分组列和对应的目标分组列所属表,所述目标链表的每个节点中包括一个与相应的目标分组列所对应的权重标记值;根据所述分组子句的所有分组列和对应的分组列所属表,以及所述目标链表,确定所述分组子句的所有分组列中的第一可标识分组列;根据所述目标链表中每个节点所对应的权重标记值,确定所述目标链表所包含的目标分组列中的第二可标识分组列;根据所述第一可标识分组列和所述第二可标识分组列,优化所述目标结构化查询语句。2.根据权利要求1所述的方法,其特征在于,所述对于分组子句中包含多个分组列的目标结构化查询语句,创建初始链表,包括:对所获取的结构化查询语句进行词法分析和语法分析,得到目标结构化查询语句;判断所述目标结构化查询语句中是否包含分组子句;若不包含分组子句,则退出优化;若包含分组子句,则判断所述分组子句是否存在外连接;若存在外连接,则退出优化;若不存在外连接,则判断所述分组子句中的分组列个数是否大于1;若所述分组列个数不大于1,则退出优化;若所述分组列个数大于1,则创建初始链表。3.根据权利要求1所述的方法,其特征在于,所述确定所述分组子句中属于特征列的分组列,并将所述属于特征列的分组列中满足预设条件的目标分组列和所述目标分组列所属表添加至所述初始链表中,构建成目标链表,包括:遍历所述分组子句中的每个分组列,判断当前分组列是否为自身所属表的特征列;若当前分组列为自身所属表的特征列,则遍历当前初始链表中的每个节点,判断所述当前初始链表中是否包含当前分组列所属表;若所述当前初始链表中不包含当前分组列所属表,则将当前分组列作为目标分组列,并将所述目标分组列和所述目标分组列所属表添加至所述当前初始链表的新增节点中;将遍历结束时的当前初始链表作为所述目标链表。4.根据权利要求1所述的方法,其特征在于,所述根据所述分组子句的所有分组列和对应的分组列所属表,以及所述目标链表,确定所述分组子句的所有分组列中的第一可标识分组列,包括:遍历所述分组子句中的每个分组列,判断所述目标链表中是否包含当前分组列所属表;若所述目标链表中不包含当前分组列所属表,则遍历所述目标链表中所包含的每个目标分组列,以判断所述目标链表中是否包含可唯一标识当前分组列的目标分组列;若是,则确定当前分组列为第一可标识分组列。
5.根据权利要求1所述的方法,其特征在于,所述权重标记值包括第一设定值、第二设定值和第三设定值;当权重标记值为第一设定值时,对应的目标分组列不唯一标识其他目标分组列,也不被所述其他目标分组列唯一标识;当权重标记值为第二设定值时,对应的目标分组列可唯一标识一个或多个其他目标分组列;当权重标记值为第三设定值时,对应的目标分组列被一个或多个其他目标分组列唯一标识。6.根据权利要求5所述的方法,其特征在于,所述目标链表的每个节点中还包括一个与相应的目标分组列所对应的替换表;在根据所述目标链表中每个节点所对应的权重标记值,确定所述目标链表所包含的目标分组列中的第二可标识分组列之前,还包括:初始化所述目标链表中每个节点所对应的权重标记值为第一设定值;初始化所述目标链表中每个节点所对应的替换表为空。7.根据权利要求5所述的方法,其特征在于,所述根据所述目标链表中每个节点所对应的权重标记值,确定所述目标链表所包含的目标分组列中的第二可标识分组列,包括:选取所述目标链表中任意两个不同的节点,判断其中一个节点中的目标分组列是否可唯一标识另一个节点中的目标分组列;若是,则将所述其中一个节点记为第一节点,将所述另一个节点记为第二节点,并根据所述第一节点和所述第二节点...
【专利技术属性】
技术研发人员:扈天阳,朱仲颖,韩朱忠,
申请(专利权)人:上海达梦数据库有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。