CN110895529B - 结构化查询语言的处理方法及相关装置 - Google Patents

结构化查询语言的处理方法及相关装置 Download PDF

Info

Publication number
CN110895529B
CN110895529B CN201810966443.4A CN201810966443A CN110895529B CN 110895529 B CN110895529 B CN 110895529B CN 201810966443 A CN201810966443 A CN 201810966443A CN 110895529 B CN110895529 B CN 110895529B
Authority
CN
China
Prior art keywords
sql
statement
constructed
word set
index list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810966443.4A
Other languages
English (en)
Other versions
CN110895529A (zh
Inventor
吴雨轩
宗占杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mashang Xiaofei Finance Co Ltd
Original Assignee
Mashang Xiaofei Finance Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mashang Xiaofei Finance Co Ltd filed Critical Mashang Xiaofei Finance Co Ltd
Priority to CN201810966443.4A priority Critical patent/CN110895529B/zh
Publication of CN110895529A publication Critical patent/CN110895529A/zh
Application granted granted Critical
Publication of CN110895529B publication Critical patent/CN110895529B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种结构化查询语言的处理方法及相关装置,先获取利用结构化查询语言SQL构建的语句;对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合;利用预定的索引设定规则,对所述利用SQL构建的语句的词集合进行处理,得到所述利用SQL构建的语句对应的更新索引列表;确定出所述利用SQL构建的语句对应的原始索引列表;根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。本发明能够通过索引设定规则完成对利用SQL构建的语句的索引最优优化,不再需要人工操作,提高优化效率的同时保证优化后的程序性能。

Description

结构化查询语言的处理方法及相关装置
技术领域
本发明涉及数据处理领域,具体为一种结构化查询语言的处理方法及装置。
背景技术
结构化查询语言(Structured Query Language,SQL)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。在项目开发和数据库运维过程中,为了提升程序性能,降低线上故障率,经常需要对SQL进行优化。
目前常用的SQL处理方法是先采用之前建立好的索引执行SQL语句,然后人工分析SQL语句的执行结果。当编程人员发现之前建立的索引不符合要求时,通过人工调整索引或新增索引的方式对之前建立的索引进行修改,并利用修改后的索引执行SQL语句,再分析执行结果,如此反复直到得到满意的执行结果。整个优化过程工作量巨大且极其耗时,优化效率低下,且优化质量非常依赖编程人员的工作经验,无法保证优化后的程序性能。
发明内容
本发明提供了一种结构化查询语言的处理方法及装置,能够高效的完成对SQL的优化工作,及时发现SQL中存在的问题,提高程序性能。
为达到上述目的,本发明提供了如下技术方案:
一种结构化查询语言的处理方法,应用于SQL分析插件,所述结构化查询语言的处理方法包括:在进行单元测试或集成测试过程中,调用所述SQL分析插件对所述测试过程中执行的SQL语句进行分析;其中,所述SQL分析插件对所述测试过程中执行的SQL语句进行分析,包括:
获取利用结构化查询语言SQL构建的语句;
对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合;
提取所述利用SQL构建的语句的词集合中的where条件字段,并计算所述提取出的where条件字段的区分度;
在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,则将所述利用SQL构建的语句的词集合中的group by字段,和/或,所述利用SQL构建的语句的词集合中的orderby字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表;
利用解析器对所述利用SQL构建的语句进行执行计划的解析,得到所述利用SQL构建的语句对应的原始索引列表;
根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
可选地,所述在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,将所述利用SQL构建的语句的词集合中的groupby字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表,包括:
在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的group by字段是否有效;
若判断出所述利用SQL构建的语句的词集合中的group by字段有效,则将所述利用SQL构建的语句的词集合中的group by字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表。
可选地,所述将所述利用SQL构建的语句的词集合中的group by字段,写入索引列表之后,还包括:
判断所述利用SQL构建的语句的词集合中的orderby字段是否有效;
若判断出所述利用SQL构建的语句的词集合中的orderby字段有效,则将所述利用SQL构建的语句的词集合中的orderby字段,写入所述索引列表;
其中,写入所述利用SQL构建的语句的词集合中的orderby字段的索引列表,作为所述更新索引列表。
可选地,还包括:
对所述写入所述利用SQL构建的语句的词集合中的orderby字段的索引列表,执行重复索引过滤操作,得到过滤后的索引列表;
其中,所述过滤后的索引列表作为所述更新索引列表。
可选地,所述在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,将所述利用SQL构建的语句的词集合中的orderby字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表,包括:
在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的orderby字段是否有效;
若判断出所述利用SQL构建的语句的词集合中的orderby字段有效,则将所述利用SQL构建的语句的词集合中的orderby字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表。
一种结构化查询语言的处理装置,所述结构化查询语言的处理装置包括SQL分析插件,所述SQL分析插件,包括:
获取单元,用于获取利用结构化查询语言SQL构建的语句;
解析单元,用于对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合;
处理单元,用于提取所述利用SQL构建的语句的词集合中的where条件字段,并计算所述提取出的where条件字段的区分度;在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,则将所述利用SQL构建的语句的词集合中的group by字段,和/或,所述利用SQL构建的语句的词集合中的orderby字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表;
控制单元,用于利用解析器对所述利用SQL构建的语句进行执行计划的解析,得到所述利用SQL构建的语句对应的原始索引列表;
生成单元,用于根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
可选地,所述处理单元执行在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,将所述利用SQL构建的语句的词集合中的groupby字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表时,包括:
第一判断单元,用于在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的group by字段是否有效;
第一写入单元,用于若所述第一判断单元判断出所述利用SQL构建的语句的词集合中的group by字段有效,将所述利用SQL构建的语句的词集合中的groupby字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表。
可选地,还包括:
第二判断单元,用于在所述将所述利用SQL构建的语句的词集合中的groupby字段,写入索引列表之后,用于判断所述利用SQL构建的语句的词集合中的orderby字段是否有效;
第二写入单元,用于若所述第二判断单元判断出所述利用SQL构建的语句的词集合中的orderby字段有效,将所述利用SQL构建的语句的词集合中的orderby字段,写入所述索引列表;
其中,写入所述利用SQL构建的语句的词集合中的orderby字段的索引列表,作为所述更新索引列表。
可选地,还包括:
过滤单元,用于对所述写入所述利用SQL构建的语句的词集合中的order by字段的索引列表,执行重复索引过滤操作,得到过滤后的索引列表;
其中,所述过滤后的索引列表作为所述更新索引列表。
可选地,所述处理单元执行在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,将所述利用SQL构建的语句的词集合中的orderby字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表,包括:
第三判断单元,用于在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的orderby字段是否有效;
第三写入单元,用于若所述第三判断单元判断出所述利用SQL构建的语句的词集合中的orderby字段有效,将所述利用SQL构建的语句的词集合中的orderby字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表。
一种结构化查询语言的处理装置,包括:存储器和处理器,其中:
所述存储器用于存储计算机指令;
所述处理器用于执行所述存储器存储的计算机指令,具体执行如上述任意一项所述的方法。
一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令用于执行如上述任意一项所述的方法。
经由上述技术方案可知,本发明公开了一种结构化查询语言的处理方法及相关装置,通过词法解析得到所述利用SQL构建的语句的词集合,利用预定的索引设定规则对词集合进行处理,得到所述利用SQL构建的语句对应的更新索引列表,根据更新索引列表和原始索引列表的比对结果,生成利用SQL构建的语句的索引优化建议。本发明能够通过索引设定规则完成对利用SQL构建的语句的索引最优优化,不再需要人工操作,提高优化效率的同时保证优化后的程序性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种结构化查询语言的处理方法的流程图;
图2为本发明实施例公开的另一种结构化查询语言的处理方法的流程图;
图3为本发明实施例公开的一种结构化查询语言的处理装置的示意图;
图4为本发明实施例公开的另一种结构化查询语言的处理装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种结构化查询语言的处理方法及相关装置,能够高效的完成对SQL的优化工作,及时发现SQL中存在的问题,提高程序性能。
首先需要说明的是,在进行项目或应用的开发过程中,当开发人员完成一个功能模块或者系统方法时,一般会进行单元测试或者集成测试,在测试过程中启用SQL分析插件,SQL分析插件会获取测试中所执行的SQL语句并进行分析,得到分析结果。
本发明公开的结构化查询语言的处理方法,能够自动的完成上述测试过程,即自动获取测试中所执行的SQL语句,并在自动完成对SQL语句的分析后生成索引优化建议。
如图1所示,本发明实施例公开了一种结构化查询语言的处理方法,应用于SQL分析插件,所述结构化查询语言的处理方法包括:在进行单元测试或者集成测试过程中,调用所述SQL分析插件对所述测试过程中执行的SQL语句进行分析;其中,所述SQL分析插件对所述测试过程中执行的SQL语句进行分析,包括以下步骤:
S101、获取利用结构化查询语言SQL构建的语句。
其中,基于mybatis的插件拦截方法调用,获取利用结构化查询语言SQL构建的语句。
S102、对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合。
在步骤S102中,所述利用SQL构建的语句的词集合包括:所述利用SQL构建的语句包括的多个关键字和每一个所述关键字对应的非关键字。
需要说明的是,词法解析是把输入转化成一个个标记(Token)。其中Token中包含关键字(Keyword也称symbol)和非关键字。例如,SQL语句select username fromuserinfo,在词法解析之后,会得到4个Token,其中有2个Keyword,分别为select和from,以及两个非关键字,分别为username和userinfo。
S103、利用预定的索引设定规则,对所述利用SQL构建的语句的词集合进行处理,得到所述利用SQL构建的语句对应的更新索引列表。
S104、确定出所述利用SQL构建的语句对应的原始索引列表。
可选的,利用解析器对所述利用SQL构建的语句进行执行计划的解析得到所述利用SQL构建的语句对应的原始索引列表。
具体的,所述利用SQL构建的语句的执行计划,是执行利用SQL构建的语句的过程,包括该执行该利用SQL构建的语句所包括的各个执行步骤。由于在执行利用SQL构建的语句的过程中,会利用预先设定的索引,因此,通过对执行计划的解析,可以得到该利用SQL构建的语句所对应的原始索引列表。
S105、根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
具体的,通过对比的方式查找更新索引列表和原始索引列表的不同之处,若发现更新索引列表和原始索引列表存在不同点,则根据所述不同点,在索引优化建议中提出对原始索引列表的修改建议。
还需要说明的是,在得到索引优化建议之后,需要输出索引优化建议。具体的,该索引优化建议,可以直接输出到控制台或者指定的文件,如此,用户可以直接查看控制台或者指定文件,得到索引优化建议,自行确定是否需要进行语句优化。
本实施例公开了一种结构化查询语言的处理方法,通过词法解析得到所述利用SQL构建的语句的词集合,利用预定的索引设定规则对词集合进行处理,得到所述利用SQL构建的语句对应的更新索引列表,根据更新索引列表和原始索引列表的比对结果,生成利用SQL构建的语句的索引优化建议。本发明能够通过索引设定规则完成对利用SQL构建的语句的索引最优优化,不再需要人工操作,提高优化效率的同时保证优化后的程序性能。
如图2所示,本发明实施例公开了另一种结构化查询语言的处理方法,同样应用于SQL分析插件,该SQL分析插件对所述项目实例中的SQL语句进行分析方法,包括以下步骤:
S201、获取利用结构化查询语言SQL构建的语句。
S202、对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合。
在步骤S202中,所述利用SQL构建的语句的词集合包括:所述利用SQL构建的语句包括的多个关键字和每一个所述关键字对应的非关键字。
S203、提取所述利用SQL构建的语句的词集合中的where条件字段,并计算所述提取出的where条件字段的区分度。
具体的,可以通过区分度的计算公式discrimination=count(distinct col)/count(*)计算所述提取出的where条件字段的区分度,区分度表示字段不重复的比例。其中,区分度为去重后的记录总数/记录总数,count(*)为统计记录总数,distinct col为对列去重,count(distinct col)为统计去重后的记录总数。
需要说明的是,where条件中一般采用and和or连接符进行连接,由于采用or连接符连接的where条件处理困难,所以忽略,只提取采用and连接符连接的where条件字段。
此外,若某where条件字段中的操作符是like,当like不是前缀匹配时,丢弃该where条件字段。
由于索引的最左匹配特性,like不是前缀匹配就无法进行索引,没有优化的必要,故丢弃。
可选的,丢弃小于预设区分度的where条件字段,按照区分度从高到低的顺序对排除小于预设区分度的where条件字段后的where条件字段的进行排序。
其中,所述预设区分度可以根据具体需要自行设置,一般情况下是将预设区分度设为30,由于区分度表示字段不重复的比例,当区分度小于30时就没有建立索引或优化索引的必要。
可选的,若利用SQL构建的语句在执行过程中只涉及一个列表,则将该列表作为唯一列表,若利用SQL构建的语句在执行过程中涉及多个列表,则按照所述区分度从高到低的顺序对所述提取出的where条件字段的进行排序之后,还包括:
判断所述where条件字段中是否存在join字段,若是,则解析所述join字段,得到多个结果集。所述结果集即为利用SQL构建的语句在执行过程中涉及多个列表。
将行数少的结果集作为驱动表。
S204、在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预设区分度的情况下,判断所述利用SQL构建的语句的词集合中的group by字段是否有效。
具体的,若所有group by字段均来自唯一列表或同一个驱动表,则判定所述利用SQL构建的语句的词集合中的group by字段有效。
S205、若判断出所述利用SQL构建的语句的词集合中的group by字段有效,则将所述利用SQL构建的语句的词集合中的groupby字段,写入索引列表。
S206、判断所述利用SQL构建的语句的词集合中的orderby字段是否有效。
具体的,若所有orderby字段均来自唯一列表或同一个驱动表,则判定所述利用SQL构建的语句的词集合中的orderby字段有效。
S207、若判断出所述利用SQL构建的语句的词集合中的orderby字段有效,则将所述利用SQL构建的语句的词集合中的orderby字段,写入所述索引列表。
其中,将写入所述利用SQL构建的语句的词集合中的group by字段和order by字段的索引列表,作为所述更新索引列表。
可选的,对所述写入利用SQL构建的语句的词集合中的group by字段和orderby字段的索引列表,执行重复索引过滤操作,得到过滤后的索引列表。
其中,将所述过滤后的索引列表作为所述更新索引列表。
S208、确定出所述利用SQL构建的语句对应的原始索引列表。
S209、根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
需要说明的是,步骤S203到步骤S207是实现第一个实施例中步骤S103的一种具体实施方式。
其中,步骤S203到步骤S205组成的技术方案与步骤S203、步骤S206到步骤S207组成的技术方案是也能够实现第一个实施例中步骤S103的另外两种具体实施方式,其执行过程以及原理与上述S03到步骤S207的内容相同,这里不再赘述
本实施例公开了另一种结构化查询语言的处理方法,通过词法解析得到所述利用SQL构建的语句的词集合,提取词集合中的where条件字段并计算区分度,当区分度大于预定阈值时,将group by字段和orderby字段写入作为更新索引列表的索引列表,根据更新索引列表和原始索引列表的比对结果,生成利用SQL构建的语句的索引优化建议。本发明能够通过索引设定规则完成对利用SQL构建的语句的索引最优优化,不再需要人工操作,提高优化效率的同时保证优化后的程序性能。
基于上述本发明实施例公开的结构化查询语言的处理方法,图3具体公开了应用该结构化查询语言的处理方法的结构化查询语言的处理装置。
如图3所示,本发明另一实施例公开了一种结构化查询语言的处理装置,该装置可以理解成是SQL分析插件,所述SQL分析插件,包括:
获取单元301,用于获取利用结构化查询语言SQL构建的语句;
解析单元302,用于对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合;
处理单元303,用于利用预定的索引设定规则,对所述利用SQL构建的语句的词集合进行处理,得到所述利用SQL构建的语句对应的更新索引列表;
确定单元304,用于确定出所述利用SQL构建的语句对应的原始索引列表;
生成单元305,用于根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
可选的,所述处理单元303,包括:
第一判断单元,用于在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的group by字段是否有效;
第一写入单元,用于若所述第一判断单元判断出所述利用SQL构建的语句的词集合中的group by字段有效,将所述利用SQL构建的语句的词集合中的groupby字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表。
可选的,所述处理装置,还包括:
第二判断单元,用于在所述将所述利用SQL构建的语句的词集合中的groupby字段,写入索引列表之后,用于判断所述利用SQL构建的语句的词集合中的orderby字段是否有效;
第二写入单元,用于若所述第二判断单元判断出所述利用SQL构建的语句的词集合中的orderby字段有效,将所述利用SQL构建的语句的词集合中的orderby字段,写入所述索引列表;
其中,写入所述利用SQL构建的语句的词集合中的orderby字段的索引列表,作为所述更新索引列表。
可选的,所述处理装置,还包括:
过滤单元,用于对所述写入所述利用SQL构建的语句的词集合中的order by字段的索引列表,执行重复索引过滤操作,得到过滤后的索引列表;
其中,所述过滤后的索引列表作为所述更新索引列表。
可选的,所述处理单元303,包括:
第三判断单元,用于在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的orderby字段是否有效;
第三写入单元,用于若所述第三判断单元判断出所述利用SQL构建的语句的词集合中的orderby字段有效,将所述利用SQL构建的语句的词集合中的orderby字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表。
可选的,所述确定单元304,包括:
控制单元,用于利用解析器对所述利用SQL构建的语句进行执行计划的解析,得到所述利用SQL构建的语句对应的原始索引列表。
以上本发明实施例公开的一种结构化查询语言的处理装置中的获取单元301、解析单元302、处理单元303、确定单元304和生成单元305的具体执行过程以及执行原理,可参见本发明上述实施例公开的结构化查询语言的处理方法中的对应内容,这里不再进行赘述。
本实施例公开了一种结构化查询语言的处理装置,解析单元通过词法解析得到获取单元获取的利用SQL构建的语句的词集合,处理单元利用预定的索引设定规则对词集合进行处理,得到所述利用SQL构建的语句对应的更新索引列表,生成单元根据更新索引列表和确定单元确定出的原始索引列表的比对结果,生成利用SQL构建的语句的索引优化建议。本发明能够通过索引设定规则完成对利用SQL构建的语句的索引最优优化,不再需要人工操作,提高优化效率的同时保证优化后的程序性能。
如图4所示,本发明公开了另一种结构化查询语言的处理装置,该硬件设备能够实现SQL分析插件的功能,包括:
存储器401和处理器402。
其中,所述存储器401用于存储计算机指令。
所述处理器402用于执行所述存储器存储的计算机指令,具体执行上述实施例公开的结构化查询语言的处理的方法。
本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令用于执行上述实施例公开的结构化查询语言的处理方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (9)

1.一种结构化查询语言的处理方法,其特征在于,应用于SQL分析插件,所述结构化查询语言的处理方法包括:在进行单元测试或集成测试过程中,调用所述SQL分析插件对所述测试过程中执行的SQL语句进行分析;其中,所述SQL分析插件对所述测试过程中执行的SQL语句进行分析,包括:
获取利用结构化查询语言SQL构建的语句;
对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合;
提取所述利用SQL构建的语句的词集合中的where条件字段,并计算所述提取出的where条件字段的区分度;
在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,则将所述利用SQL构建的语句的词集合中的group by字段,和/或,所述利用SQL构建的语句的词集合中的order by字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表;
利用解析器对所述利用SQL构建的语句进行执行计划的解析,得到所述利用SQL构建的语句对应的原始索引列表;
根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
2.根据权利要求1所述的方法,其特征在于,所述在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,将所述利用SQL构建的语句的词集合中的group by字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表,包括:
在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的group by字段是否有效;
若判断出所述利用SQL构建的语句的词集合中的group by字段有效,则将所述利用SQL构建的语句的词集合中的group by字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表。
3.根据权利要求2所述的方法,其特征在于,所述将所述利用SQL构建的语句的词集合中的group by字段,写入索引列表之后,还包括:
判断所述利用SQL构建的语句的词集合中的order by字段是否有效;
若判断出所述利用SQL构建的语句的词集合中的order by字段有效,则将所述利用SQL构建的语句的词集合中的order by字段,写入所述索引列表;
其中,写入所述利用SQL构建的语句的词集合中的order by字段的索引列表,作为所述更新索引列表。
4.根据权利要求3所述的方法,其特征在于,还包括:
对所述写入所述利用SQL构建的语句的词集合中的order by字段的索引列表,执行重复索引过滤操作,得到过滤后的索引列表;
其中,所述过滤后的索引列表作为所述更新索引列表。
5.根据权利要求1所述的方法,其特征在于,所述在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,将所述利用SQL构建的语句的词集合中的order by字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表,包括:
在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的order by字段是否有效;
若判断出所述利用SQL构建的语句的词集合中的order by字段有效,则将所述利用SQL构建的语句的词集合中的order by字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表。
6.一种结构化查询语言的处理装置,其特征在于,所述结构化查询语言的处理装置包括SQL分析插件,所述SQL分析插件,包括:
获取单元,用于获取利用结构化查询语言SQL构建的语句;
解析单元,用于对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合;
处理单元,用于提取所述利用SQL构建的语句的词集合中的where条件字段,并计算所述提取出的where条件字段的区分度;在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,则将所述利用SQL构建的语句的词集合中的groupby字段,和/或,所述利用SQL构建的语句的词集合中的order by字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表;
控制单元,用于利用解析器对所述利用SQL构建的语句进行执行计划的解析,得到所述利用SQL构建的语句对应的原始索引列表;
生成单元,用于根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
7.根据权利要求6所述的装置,其特征在于,所述处理单元执行在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,将所述利用SQL构建的语句的词集合中的group by字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表时,包括:
第一判断单元,用于在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的group by字段是否有效;
第一写入单元,用于若所述第一判断单元判断出所述利用SQL构建的语句的词集合中的group by字段有效,将所述利用SQL构建的语句的词集合中的group by字段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表。
8.一种结构化查询语言的处理装置,其特征在于,包括:存储器和处理器,其中:
所述存储器用于存储计算机指令;
所述处理器用于执行所述存储器存储的计算机指令,具体执行如权利要求1-5中任意一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,所述指令用于执行如权利要求1-5中任意一项所述的方法。
CN201810966443.4A 2018-08-23 2018-08-23 结构化查询语言的处理方法及相关装置 Active CN110895529B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810966443.4A CN110895529B (zh) 2018-08-23 2018-08-23 结构化查询语言的处理方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810966443.4A CN110895529B (zh) 2018-08-23 2018-08-23 结构化查询语言的处理方法及相关装置

Publications (2)

Publication Number Publication Date
CN110895529A CN110895529A (zh) 2020-03-20
CN110895529B true CN110895529B (zh) 2021-03-30

Family

ID=69784754

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810966443.4A Active CN110895529B (zh) 2018-08-23 2018-08-23 结构化查询语言的处理方法及相关装置

Country Status (1)

Country Link
CN (1) CN110895529B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117290352A (zh) * 2022-06-16 2023-12-26 中兴通讯股份有限公司 索引建立方法、电子设备和计算机存储设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105989137A (zh) * 2015-02-27 2016-10-05 中国移动通信集团河北有限公司 一种结构化查询语言性能优化方法及系统
CN106611044A (zh) * 2016-12-02 2017-05-03 星环信息科技(上海)有限公司 一种sql优化方法及设备
CN108170775A (zh) * 2017-12-26 2018-06-15 上海新炬网络技术有限公司 一种数据库sql索引动态优化方法
CN108255477A (zh) * 2018-01-15 2018-07-06 贵州易鲸捷信息技术有限公司 一种通过sql编译器模拟优化数据库性能的方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700608B2 (en) * 2007-10-17 2014-04-15 Oracle International Corporation SQL execution plan verification
US9846724B2 (en) * 2014-11-13 2017-12-19 Sap Se Integration of calculation models into SQL layer

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105989137A (zh) * 2015-02-27 2016-10-05 中国移动通信集团河北有限公司 一种结构化查询语言性能优化方法及系统
CN106611044A (zh) * 2016-12-02 2017-05-03 星环信息科技(上海)有限公司 一种sql优化方法及设备
CN108170775A (zh) * 2017-12-26 2018-06-15 上海新炬网络技术有限公司 一种数据库sql索引动态优化方法
CN108255477A (zh) * 2018-01-15 2018-07-06 贵州易鲸捷信息技术有限公司 一种通过sql编译器模拟优化数据库性能的方法及系统

Also Published As

Publication number Publication date
CN110895529A (zh) 2020-03-20

Similar Documents

Publication Publication Date Title
CN110795455B (zh) 依赖关系解析方法、电子装置、计算机设备及可读存储介质
US9323809B2 (en) System and methods for rapid data analysis
CN108052394B (zh) 基于sql语句运行时间的资源分配的方法及计算机设备
CN110909016B (zh) 基于数据库的重复关联检测方法、装置、设备及存储介质
CN107016019B (zh) 数据库索引创建方法及装置
CN112988782B (zh) Hive支持交互式查询的方法、装置及存储介质
CN107016018B (zh) 数据库索引创建方法及装置
WO2016165562A1 (en) Apparatus and method for using parameterized intermediate representation for just-in-time compilation in database query execution engine
CN110222071B (zh) 一种数据查询方法、装置、服务器及存储介质
CN109947804B (zh) 数据集合查询的优化方法、装置、服务器和存储介质
CN109145003B (zh) 一种构建知识图谱的方法及装置
CN110688544A (zh) 一种查询数据库的方法、设备及存储介质
US11288266B2 (en) Candidate projection enumeration based query response generation
CN112100198B (zh) 数据库sql语句优化方法、装置、设备及存储介质
CN112162983A (zh) 数据库索引建议处理方法、装置、介质和电子设备
CN112434003A (zh) 一种sql优化方法、装置、计算机设备及存储介质
CN111427784A (zh) 一种数据获取方法、装置、设备及存储介质
CN110704472A (zh) 数据查询统计方法及装置
CN110888876A (zh) 生成数据库脚本的方法、装置、存储介质及计算机设备
CN110895529B (zh) 结构化查询语言的处理方法及相关装置
CN110580170B (zh) 软件性能风险的识别方法及装置
CN112765118B (zh) 一种日志查询方法、装置、设备及存储介质
CN110633430B (zh) 事件发现方法、装置、设备和计算机可读存储介质
CN108763474B (zh) 获取交易相关性及执行回归测试的方法、装置及存储介质
CN112948419A (zh) 查询语句处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant