SQL优化方法、装置、电子设备及存储介质制造方法及图纸

技术编号:39195097 阅读:14 留言:0更新日期:2023-10-27 08:42
本发明专利技术涉及数字医疗和数据库技术领域,提供一种SQL优化方法、装置、电子设备及存储介质,所述方法包括:接收单条第一SQL语句;当第一SQL语句中包含有第二SQL语句时,对第一SQL语句进行解析,基于解析结果生成第一抽象语法树;分析第一抽象语法树中各个字段之间的依赖关系;依据依赖关系,从第一抽象语法树中识别出第二SQL语句中的星号对应的第一字段集;对第一字段集中的每个第一字段进行格式转换,得到第二字段集;根据第二字段集对第二SQL语句进行优化,得到优化后的SQL语句。本发明专利技术根据依赖关系,识别出SQL语句中的星号对应的第一字段集,实现单条SQL语句的优化,进而提高SQL语句的优化效率。句的优化效率。句的优化效率。

【技术实现步骤摘要】
SQL优化方法、装置、电子设备及存储介质


[0001]本专利技术涉及数字医疗和数据库
,具体涉及一种SQL优化方法、装置、电子设备及存储介质。

技术介绍

[0002]在医学应用场景中,SQL作为一种数据库查询和程序设计语言,可用于查询医疗数据库中存储的医学影像、医疗文本等。SQL调优技术包括多种,如利用决策模型对抽象语法树进行优化处理,再将优化后的抽象语法解析树转换得到优化后的SQL语句;再如利用预设改写规则对SQL进行优化改写得到优化后的SQL,或者通过对多条SQL语句之间的表和字段的依赖关系分析得到可以去除的无用表,从而实现SQL优化。
[0003]然而,这些方法通常针对特定结构的SQL进行替换优化,特别是针对物理表使用select*查询的情况及单条SQL语句中带select*查询,无法实现带有“Select*”查询的单条SQL语句的优化,导致SQL优化效率低下。

技术实现思路

[0004]鉴于以上内容,有必要提出一种SQL优化方法、装置、电子设备及存储介质,根据依赖关系,识别出SQL语句中的星号对应的第一字段集,实现了单条SQL语句的优化,进而提高了SQL语句的优化效率。
[0005]本专利技术的第一方面提供一种SQL优化方法,所述方法包括:
[0006]接收单条第一SQL语句;
[0007]识别所述第一SQL语句中是否包含有第二SQL语句,其中,所述第二SQL语句中包含有通配符元素星号;
[0008]当所述第一SQL语句中包含有所述第二SQL语句时,对所述第一SQL语句进行解析,基于解析结果生成第一抽象语法树;
[0009]分析所述第一抽象语法树中各个字段之间的依赖关系;
[0010]依据所述依赖关系,从所述第一抽象语法树中识别出所述第二SQL语句中的星号对应的第一字段集;
[0011]对所述第一字段集中的每个第一字段进行格式转换,得到第二字段集;
[0012]基于所述第二字段集,对所述第二SQL语句进行优化,得到优化后的SQL语句。
[0013]可选地,所述依据所述依赖关系,从所述第一抽象语法树中识别出所述第二SQL语句中的星号对应的第一字段集包括:
[0014]遍历所述第一抽象语法树,识别出所述第二SQL语句中的星号所出现的层级;
[0015]依据所述依赖关系,提取出所述层级对应的上层字段集和下层字段集;
[0016]查询所述上层字段集,确定出所述星号对应的候选字段集;
[0017]对所述候选字段集和所述下层字段集进行关联校验,得到所述第二SQL语句中的星号对应的第一字段集。
[0018]可选地,所述遍历所述第一抽象语法树,识别出所述第二SQL语句中的星号所出现的层级包括:
[0019]遍历所述第一抽象语法树,匹配出第一关键字所出现的层级;
[0020]将所述第一关键字出现的层级确定为所述第二SQL语句中的星号所出现的层级。
[0021]可选地,所述查询所述上层字段集,确定出所述星号对应的候选字段集包括:
[0022]查询所述上层字段集中第二关键字对应的字段集,将所述第二关键字对应的字段集确定为所述星号对应的候选字段集。
[0023]可选地,所述对所述候选字段集和所述下层字段集进行关联校验,得到所述第二SQL语句中的星号对应的第一字段集包括:
[0024]将所述候选字段集中的每个候选字段与所述下层字段集中的字段进行匹配;
[0025]保留与所述下层字段集中的字段相匹配的候选字段,确定为所述第二SQL语句中的星号对应的第一字段集。
[0026]可选地,所述识别出所述第二SQL语句中的星号所出现的层级包括:
[0027]当识别出所述第二SQL语句中的星号所出现的层级为最顶层时,将所述最顶层的下层字段集确定为所述第二SQL语句中的星号对应的第一字段集;
[0028]当识别出所述第二SQL语句中的星号所出现的层级为最低层时,将所述最低层的上层字段集确定为所述第二SQL语句中的星号对应的第一字段集。
[0029]可选地,所述基于所述第二字段集,对所述第二SQL语句进行优化,得到优化后的SQL语句包括:
[0030]遍历所述第一抽象语法树中的第二SQL语句中的星号,从所述第二字段集中获取所述星号对应的第二字段,并将所述星号替换为所述第二字段,得到第二抽象语法树;
[0031]对所述第二抽象语法树进行语义反解析,得到优化后的SQL语句。
[0032]本专利技术的第二方面提供一种SQL优化装置,所述装置包括:
[0033]接收模块,用于接收单条第一SQL语句;
[0034]第一识别模块,用于识别所述第一SQL语句中是否包含有第二SQL语句,其中,所述第二SQL语句中包含有通配符元素星号;
[0035]解析模块,用于当所述第一SQL语句中包含有所述第二SQL语句时,对所述第一SQL语句进行解析,基于解析结果生成第一抽象语法树;
[0036]分析模块,用于分析所述第一抽象语法树中各个字段之间的依赖关系;
[0037]第二识别模块,用于依据所述依赖关系,从所述第一抽象语法树中识别出所述第二SQL语句中的星号对应的第一字段集;
[0038]转换模块,用于对所述第一字段集中的每个第一字段进行格式转换,得到第二字段集;
[0039]优化模块,用于基于所述第二字段集,对所述第二SQL语句进行优化,得到优化后的SQL语句。
[0040]本专利技术的第三方面提供一种电子设备,所述电子设备包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现所述的SQL优化方法。
[0041]本专利技术的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的SQL优化方法。
[0042]综上所述,本专利技术所述的SQL优化方法、装置、电子设备及存储介质,能够推动智慧城市的建设,应用于智慧建筑、智慧安防、智慧社区、智慧生活、物联网等领域,通过接收单条第一SQL语句,当所述第一SQL语句中包含有所述第二SQL语句时,对所述第一SQL语句进行解析,基于解析结果生成第一抽象语法树,并分析所述第一抽象语法树中各个字段之间的依赖关系,通过依据字段之间的依赖关系,实现对“Select*”查询中的实际字段分析,并替换成有依赖关系的对应字段,即第二字段,得到替换后不含“Select*”查询的优化后的SQL语句,实现了单条SQL语句的优化,进而提高了SQL语句的优化效率。
附图说明
[0043]图1是本专利技术实施例一提供的SQL优化方法的流程图。
[0044]图2时本专利技术实施例一提供的获取星号对应的第一字段集的示意图。
[0045]图3是本专利技术实施例二提供的SQL优化装置的结构图。
[0046]图4是本专利技术实施例三提供的电子设备的结构示意图。
具体实施方式
[0047]为本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种SQL优化方法,其特征在于,所述方法包括:接收单条第一SQL语句;识别所述第一SQL语句中是否包含有第二SQL语句,其中,所述第二SQL语句中包含有通配符元素星号;当所述第一SQL语句中包含有所述第二SQL语句时,对所述第一SQL语句进行解析,基于解析结果生成第一抽象语法树;分析所述第一抽象语法树中各个字段之间的依赖关系;依据所述依赖关系,从所述第一抽象语法树中识别出所述第二SQL语句中的星号对应的第一字段集;对所述第一字段集中的每个第一字段进行格式转换,得到第二字段集;基于所述第二字段集,对所述第二SQL语句进行优化,得到优化后的SQL语句。2.如权利要求1所述的SQL优化方法,其特征在于,所述依据所述依赖关系,从所述第一抽象语法树中识别出所述第二SQL语句中的星号对应的第一字段集包括:遍历所述第一抽象语法树,识别出所述第二SQL语句中的星号所出现的层级;依据所述依赖关系,提取出所述层级对应的上层字段集和下层字段集;查询所述上层字段集,确定出所述星号对应的候选字段集;对所述候选字段集和所述下层字段集进行关联校验,得到所述第二SQL语句中的星号对应的第一字段集。3.如权利要求2所述的SQL优化方法,其特征在于,所述遍历所述第一抽象语法树,识别出所述第二SQL语句中的星号所出现的层级包括:遍历所述第一抽象语法树,匹配出第一关键字所出现的层级;将所述第一关键字出现的层级确定为所述第二SQL语句中的星号所出现的层级。4.如权利要求2所述的SQL优化方法,其特征在于,所述查询所述上层字段集,确定出所述星号对应的候选字段集包括:查询所述上层字段集中第二关键字对应的字段集,将所述第二关键字对应的字段集确定为所述星号对应的候选字段集。5.如权利要求2所述的SQL优化方法,其特征在于,所述对所述候选字段集和所述下层字段集进行关联校验,得到所述第二SQL语句中的星号对应的第一字段集包括:将所述候选字段集中的每个候选字段与所述下层字段集中的字段进行匹配;保留与所述下层字段集中的字段相匹配的候选字段,确定为所述第二SQL语句中的星...

【专利技术属性】
技术研发人员:李震川李钊李均
申请(专利权)人:平安科技深圳有限公司
类型:发明
国别省市:

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

1