结构化查询语言的处理方法及相关装置转让专利

申请号 : CN201810966443.4

文献号 : CN110895529B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴雨轩宗占杰

申请人 : 马上消费金融股份有限公司

摘要 :

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

权利要求 :

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构建的语句的词集合中的group by字段,和/或,所述利用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中任意一项所述的方法。

说明书 :

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

技术领域

[0001] 本发明涉及数据处理领域,具体为一种结构化查询语言的处理方法及装置。

背景技术

[0002] 结构化查询语言(Structured Query Language,SQL)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。在项目开发和数据库运维过
程中,为了提升程序性能,降低线上故障率,经常需要对SQL进行优化。
[0003] 目前常用的SQL处理方法是先采用之前建立好的索引执行SQL语句,然后人工分析SQL语句的执行结果。当编程人员发现之前建立的索引不符合要求时,通过人工调整索引或
新增索引的方式对之前建立的索引进行修改,并利用修改后的索引执行SQL语句,再分析执
行结果,如此反复直到得到满意的执行结果。整个优化过程工作量巨大且极其耗时,优化效
率低下,且优化质量非常依赖编程人员的工作经验,无法保证优化后的程序性能。

发明内容

[0004] 本发明提供了一种结构化查询语言的处理方法及装置,能够高效的完成对SQL的优化工作,及时发现SQL中存在的问题,提高程序性能。
[0005] 为达到上述目的,本发明提供了如下技术方案:
[0006] 一种结构化查询语言的处理方法,应用于SQL分析插件,所述结构化查询语言的处理方法包括:在进行单元测试或集成测试过程中,调用所述SQL分析插件对所述测试过程中
执行的SQL语句进行分析;其中,所述SQL分析插件对所述测试过程中执行的SQL语句进行分
析,包括:
[0007] 获取利用结构化查询语言SQL构建的语句;
[0008] 对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合;
[0009] 提取所述利用SQL构建的语句的词集合中的where条件字段,并计算所述提取出的where条件字段的区分度;
[0010] 在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,则将所述利用SQL构建的语句的词集合中的group by字段,和/或,所述利用SQL
构建的语句的词集合中的orderby字段,写入索引列表,得到所述利用SQL构建的语句对应
的更新索引列表;
[0011] 利用解析器对所述利用SQL构建的语句进行执行计划的解析,得到所述利用SQL构建的语句对应的原始索引列表;
[0012] 根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
[0013] 可选地,所述在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,将所述利用SQL构建的语句的词集合中的groupby字段,写入索引列
表,得到所述利用SQL构建的语句对应的更新索引列表,包括:
[0014] 在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的group by字段是否有效;
[0015] 若判断出所述利用SQL构建的语句的词集合中的group by字段有效,则将所述利用SQL构建的语句的词集合中的group by字段,写入索引列表,得到所述利用SQL构建的语
句对应的更新索引列表。
[0016] 可选地,所述将所述利用SQL构建的语句的词集合中的group by字段,写入索引列表之后,还包括:
[0017] 判断所述利用SQL构建的语句的词集合中的orderby字段是否有效;
[0018] 若判断出所述利用SQL构建的语句的词集合中的orderby字段有效,则将所述利用SQL构建的语句的词集合中的orderby字段,写入所述索引列表;
[0019] 其中,写入所述利用SQL构建的语句的词集合中的orderby字段的索引列表,作为所述更新索引列表。
[0020] 可选地,还包括:
[0021] 对所述写入所述利用SQL构建的语句的词集合中的orderby字段的索引列表,执行重复索引过滤操作,得到过滤后的索引列表;
[0022] 其中,所述过滤后的索引列表作为所述更新索引列表。
[0023] 可选地,所述在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,将所述利用SQL构建的语句的词集合中的orderby字段,写入索引列
表,得到所述利用SQL构建的语句对应的更新索引列表,包括:
[0024] 在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的orderby字段是否有效;
[0025] 若判断出所述利用SQL构建的语句的词集合中的orderby字段有效,则将所述利用SQL构建的语句的词集合中的orderby字段,写入索引列表,得到所述利用SQL构建的语句对
应的更新索引列表。
[0026] 一种结构化查询语言的处理装置,所述结构化查询语言的处理装置包括SQL分析插件,所述SQL分析插件,包括:
[0027] 获取单元,用于获取利用结构化查询语言SQL构建的语句;
[0028] 解析单元,用于对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合;
[0029] 处理单元,用于提取所述利用SQL构建的语句的词集合中的where条件字段,并计算所述提取出的where条件字段的区分度;在所述利用SQL构建的语句的词集合中的where
条件字段的区分度大于预定阈值的情况下,则将所述利用SQL构建的语句的词集合中的
group by字段,和/或,所述利用SQL构建的语句的词集合中的orderby字段,写入索引列表,
得到所述利用SQL构建的语句对应的更新索引列表;
[0030] 控制单元,用于利用解析器对所述利用SQL构建的语句进行执行计划的解析,得到所述利用SQL构建的语句对应的原始索引列表;
[0031] 生成单元,用于根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
[0032] 可选地,所述处理单元执行在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,将所述利用SQL构建的语句的词集合中的groupby字
段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表时,包括:
[0033] 第一判断单元,用于在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的group by字段是
否有效;
[0034] 第一写入单元,用于若所述第一判断单元判断出所述利用SQL构建的语句的词集合中的group by字段有效,将所述利用SQL构建的语句的词集合中的groupby字段,写入索
引列表,得到所述利用SQL构建的语句对应的更新索引列表。
[0035] 可选地,还包括:
[0036] 第二判断单元,用于在所述将所述利用SQL构建的语句的词集合中的groupby字段,写入索引列表之后,用于判断所述利用SQL构建的语句的词集合中的orderby字段是否
有效;
[0037] 第二写入单元,用于若所述第二判断单元判断出所述利用SQL构建的语句的词集合中的orderby字段有效,将所述利用SQL构建的语句的词集合中的orderby字段,写入所述
索引列表;
[0038] 其中,写入所述利用SQL构建的语句的词集合中的orderby字段的索引列表,作为所述更新索引列表。
[0039] 可选地,还包括:
[0040] 过滤单元,用于对所述写入所述利用SQL构建的语句的词集合中的order by字段的索引列表,执行重复索引过滤操作,得到过滤后的索引列表;
[0041] 其中,所述过滤后的索引列表作为所述更新索引列表。
[0042] 可选地,所述处理单元执行在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,将所述利用SQL构建的语句的词集合中的orderby字
段,写入索引列表,得到所述利用SQL构建的语句对应的更新索引列表,包括:
[0043] 第三判断单元,用于在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的orderby字段是否
有效;
[0044] 第三写入单元,用于若所述第三判断单元判断出所述利用SQL构建的语句的词集合中的orderby字段有效,将所述利用SQL构建的语句的词集合中的orderby字段,写入索引
列表,得到所述利用SQL构建的语句对应的更新索引列表。
[0045] 一种结构化查询语言的处理装置,包括:存储器和处理器,其中:
[0046] 所述存储器用于存储计算机指令;
[0047] 所述处理器用于执行所述存储器存储的计算机指令,具体执行如上述任意一项所述的方法。
[0048] 一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令用于执行如上述任意一项所述的方法。
[0049] 经由上述技术方案可知,本发明公开了一种结构化查询语言的处理方法及相关装置,通过词法解析得到所述利用SQL构建的语句的词集合,利用预定的索引设定规则对词集
合进行处理,得到所述利用SQL构建的语句对应的更新索引列表,根据更新索引列表和原始
索引列表的比对结果,生成利用SQL构建的语句的索引优化建议。本发明能够通过索引设定
规则完成对利用SQL构建的语句的索引最优优化,不再需要人工操作,提高优化效率的同时
保证优化后的程序性能。

附图说明

[0050] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图获得其他的附图。
[0051] 图1为本发明实施例公开的一种结构化查询语言的处理方法的流程图;
[0052] 图2为本发明实施例公开的另一种结构化查询语言的处理方法的流程图;
[0053] 图3为本发明实施例公开的一种结构化查询语言的处理装置的示意图;
[0054] 图4为本发明实施例公开的另一种结构化查询语言的处理装置的示意图。

具体实施方式

[0055] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0056] 本发明提供了一种结构化查询语言的处理方法及相关装置,能够高效的完成对SQL的优化工作,及时发现SQL中存在的问题,提高程序性能。
[0057] 首先需要说明的是,在进行项目或应用的开发过程中,当开发人员完成一个功能模块或者系统方法时,一般会进行单元测试或者集成测试,在测试过程中启用SQL分析插
件,SQL分析插件会获取测试中所执行的SQL语句并进行分析,得到分析结果。
[0058] 本发明公开的结构化查询语言的处理方法,能够自动的完成上述测试过程,即自动获取测试中所执行的SQL语句,并在自动完成对SQL语句的分析后生成索引优化建议。
[0059] 如图1所示,本发明实施例公开了一种结构化查询语言的处理方法,应用于SQL分析插件,所述结构化查询语言的处理方法包括:在进行单元测试或者集成测试过程中,调用
所述SQL分析插件对所述测试过程中执行的SQL语句进行分析;其中,所述SQL分析插件对所
述测试过程中执行的SQL语句进行分析,包括以下步骤:
[0060] S101、获取利用结构化查询语言SQL构建的语句。
[0061] 其中,基于mybatis的插件拦截方法调用,获取利用结构化查询语言SQL构建的语句。
[0062] S102、对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合。
[0063] 在步骤S102中,所述利用SQL构建的语句的词集合包括:所述利用SQL构建的语句包括的多个关键字和每一个所述关键字对应的非关键字。
[0064] 需要说明的是,词法解析是把输入转化成一个个标记(Token)。其中Token中包含关键字(Keyword也称symbol)和非关键字。例如,SQL语句select username from 
userinfo,在词法解析之后,会得到4个Token,其中有2个Keyword,分别为select和from,以
及两个非关键字,分别为username和userinfo。
[0065] S103、利用预定的索引设定规则,对所述利用SQL构建的语句的词集合进行处理,得到所述利用SQL构建的语句对应的更新索引列表。
[0066] S104、确定出所述利用SQL构建的语句对应的原始索引列表。
[0067] 可选的,利用解析器对所述利用SQL构建的语句进行执行计划的解析得到所述利用SQL构建的语句对应的原始索引列表。
[0068] 具体的,所述利用SQL构建的语句的执行计划,是执行利用SQL构建的语句的过程,包括该执行该利用SQL构建的语句所包括的各个执行步骤。由于在执行利用SQL构建的语句
的过程中,会利用预先设定的索引,因此,通过对执行计划的解析,可以得到该利用SQL构建
的语句所对应的原始索引列表。
[0069] S105、根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
[0070] 具体的,通过对比的方式查找更新索引列表和原始索引列表的不同之处,若发现更新索引列表和原始索引列表存在不同点,则根据所述不同点,在索引优化建议中提出对
原始索引列表的修改建议。
[0071] 还需要说明的是,在得到索引优化建议之后,需要输出索引优化建议。具体的,该索引优化建议,可以直接输出到控制台或者指定的文件,如此,用户可以直接查看控制台或
者指定文件,得到索引优化建议,自行确定是否需要进行语句优化。
[0072] 本实施例公开了一种结构化查询语言的处理方法,通过词法解析得到所述利用SQL构建的语句的词集合,利用预定的索引设定规则对词集合进行处理,得到所述利用SQL
构建的语句对应的更新索引列表,根据更新索引列表和原始索引列表的比对结果,生成利
用SQL构建的语句的索引优化建议。本发明能够通过索引设定规则完成对利用SQL构建的语
句的索引最优优化,不再需要人工操作,提高优化效率的同时保证优化后的程序性能。
[0073] 如图2所示,本发明实施例公开了另一种结构化查询语言的处理方法,同样应用于SQL分析插件,该SQL分析插件对所述项目实例中的SQL语句进行分析方法,包括以下步骤:
[0074] S201、获取利用结构化查询语言SQL构建的语句。
[0075] S202、对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合。
[0076] 在步骤S202中,所述利用SQL构建的语句的词集合包括:所述利用SQL构建的语句包括的多个关键字和每一个所述关键字对应的非关键字。
[0077] S203、提取所述利用SQL构建的语句的词集合中的where条件字段,并计算所述提取出的where条件字段的区分度。
[0078] 具体的,可以通过区分度的计算公式discrimination=count(distinct col)/count(*)计算所述提取出的where条件字段的区分度,区分度表示字段不重复的比例。其
中,区分度为去重后的记录总数/记录总数,count(*)为统计记录总数,distinct col为对
列去重,count(distinct col)为统计去重后的记录总数。
[0079] 需要说明的是,where条件中一般采用and和or连接符进行连接,由于采用or连接符连接的where条件处理困难,所以忽略,只提取采用and连接符连接的where条件字段。
[0080] 此外,若某where条件字段中的操作符是like,当like不是前缀匹配时,丢弃该where条件字段。
[0081] 由于索引的最左匹配特性,like不是前缀匹配就无法进行索引,没有优化的必要,故丢弃。
[0082] 可选的,丢弃小于预设区分度的where条件字段,按照区分度从高到低的顺序对排除小于预设区分度的where条件字段后的where条件字段的进行排序。
[0083] 其中,所述预设区分度可以根据具体需要自行设置,一般情况下是将预设区分度设为30,由于区分度表示字段不重复的比例,当区分度小于30时就没有建立索引或优化索
引的必要。
[0084] 可选的,若利用SQL构建的语句在执行过程中只涉及一个列表,则将该列表作为唯一列表,若利用SQL构建的语句在执行过程中涉及多个列表,则按照所述区分度从高到低的
顺序对所述提取出的where条件字段的进行排序之后,还包括:
[0085] 判断所述where条件字段中是否存在join字段,若是,则解析所述join字段,得到多个结果集。所述结果集即为利用SQL构建的语句在执行过程中涉及多个列表。
[0086] 将行数少的结果集作为驱动表。
[0087] S204、在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预设区分度的情况下,判断所述利用SQL构建的语句的词集合中的group by字段是否有效。
[0088] 具体的,若所有group by字段均来自唯一列表或同一个驱动表,则判定所述利用SQL构建的语句的词集合中的group by字段有效。
[0089] S205、若判断出所述利用SQL构建的语句的词集合中的group by字段有效,则将所述利用SQL构建的语句的词集合中的groupby字段,写入索引列表。
[0090] S206、判断所述利用SQL构建的语句的词集合中的orderby字段是否有效。
[0091] 具体的,若所有orderby字段均来自唯一列表或同一个驱动表,则判定所述利用SQL构建的语句的词集合中的orderby字段有效。
[0092] S207、若判断出所述利用SQL构建的语句的词集合中的orderby字段有效,则将所述利用SQL构建的语句的词集合中的orderby字段,写入所述索引列表。
[0093] 其中,将写入所述利用SQL构建的语句的词集合中的group by字段和order by字段的索引列表,作为所述更新索引列表。
[0094] 可选的,对所述写入利用SQL构建的语句的词集合中的group by字段和orderby字段的索引列表,执行重复索引过滤操作,得到过滤后的索引列表。
[0095] 其中,将所述过滤后的索引列表作为所述更新索引列表。
[0096] S208、确定出所述利用SQL构建的语句对应的原始索引列表。
[0097] S209、根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
[0098] 需要说明的是,步骤S203到步骤S207是实现第一个实施例中步骤S103的一种具体实施方式。
[0099] 其中,步骤S203到步骤S205组成的技术方案与步骤S203、步骤S206到步骤S207组成的技术方案是也能够实现第一个实施例中步骤S103的另外两种具体实施方式,其执行过
程以及原理与上述S03到步骤S207的内容相同,这里不再赘述
[0100] 本实施例公开了另一种结构化查询语言的处理方法,通过词法解析得到所述利用SQL构建的语句的词集合,提取词集合中的where条件字段并计算区分度,当区分度大于预
定阈值时,将group by字段和orderby字段写入作为更新索引列表的索引列表,根据更新索
引列表和原始索引列表的比对结果,生成利用SQL构建的语句的索引优化建议。本发明能够
通过索引设定规则完成对利用SQL构建的语句的索引最优优化,不再需要人工操作,提高优
化效率的同时保证优化后的程序性能。
[0101] 基于上述本发明实施例公开的结构化查询语言的处理方法,图3具体公开了应用该结构化查询语言的处理方法的结构化查询语言的处理装置。
[0102] 如图3所示,本发明另一实施例公开了一种结构化查询语言的处理装置,该装置可以理解成是SQL分析插件,所述SQL分析插件,包括:
[0103] 获取单元301,用于获取利用结构化查询语言SQL构建的语句;
[0104] 解析单元302,用于对所述利用SQL构建的语句进行词法解析,得到所述利用SQL构建的语句的词集合;
[0105] 处理单元303,用于利用预定的索引设定规则,对所述利用SQL构建的语句的词集合进行处理,得到所述利用SQL构建的语句对应的更新索引列表;
[0106] 确定单元304,用于确定出所述利用SQL构建的语句对应的原始索引列表;
[0107] 生成单元305,用于根据所述更新索引列表和所述原始索引列表的比对结果,生成所述利用SQL构建的语句的索引优化建议。
[0108] 可选的,所述处理单元303,包括:
[0109] 第一判断单元,用于在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的group by字段是
否有效;
[0110] 第一写入单元,用于若所述第一判断单元判断出所述利用SQL构建的语句的词集合中的group by字段有效,将所述利用SQL构建的语句的词集合中的groupby字段,写入索
引列表,得到所述利用SQL构建的语句对应的更新索引列表。
[0111] 可选的,所述处理装置,还包括:
[0112] 第二判断单元,用于在所述将所述利用SQL构建的语句的词集合中的groupby字段,写入索引列表之后,用于判断所述利用SQL构建的语句的词集合中的orderby字段是否
有效;
[0113] 第二写入单元,用于若所述第二判断单元判断出所述利用SQL构建的语句的词集合中的orderby字段有效,将所述利用SQL构建的语句的词集合中的orderby字段,写入所述
索引列表;
[0114] 其中,写入所述利用SQL构建的语句的词集合中的orderby字段的索引列表,作为所述更新索引列表。
[0115] 可选的,所述处理装置,还包括:
[0116] 过滤单元,用于对所述写入所述利用SQL构建的语句的词集合中的order by字段的索引列表,执行重复索引过滤操作,得到过滤后的索引列表;
[0117] 其中,所述过滤后的索引列表作为所述更新索引列表。
[0118] 可选的,所述处理单元303,包括:
[0119] 第三判断单元,用于在所述利用SQL构建的语句的词集合中的where条件字段的区分度大于预定阈值的情况下,判断所述利用SQL构建的语句的词集合中的orderby字段是否
有效;
[0120] 第三写入单元,用于若所述第三判断单元判断出所述利用SQL构建的语句的词集合中的orderby字段有效,将所述利用SQL构建的语句的词集合中的orderby字段,写入索引
列表,得到所述利用SQL构建的语句对应的更新索引列表。
[0121] 可选的,所述确定单元304,包括:
[0122] 控制单元,用于利用解析器对所述利用SQL构建的语句进行执行计划的解析,得到所述利用SQL构建的语句对应的原始索引列表。
[0123] 以上本发明实施例公开的一种结构化查询语言的处理装置中的获取单元301、解析单元302、处理单元303、确定单元304和生成单元305的具体执行过程以及执行原理,可参
见本发明上述实施例公开的结构化查询语言的处理方法中的对应内容,这里不再进行赘
述。
[0124] 本实施例公开了一种结构化查询语言的处理装置,解析单元通过词法解析得到获取单元获取的利用SQL构建的语句的词集合,处理单元利用预定的索引设定规则对词集合
进行处理,得到所述利用SQL构建的语句对应的更新索引列表,生成单元根据更新索引列表
和确定单元确定出的原始索引列表的比对结果,生成利用SQL构建的语句的索引优化建议。
本发明能够通过索引设定规则完成对利用SQL构建的语句的索引最优优化,不再需要人工
操作,提高优化效率的同时保证优化后的程序性能。
[0125] 如图4所示,本发明公开了另一种结构化查询语言的处理装置,该硬件设备能够实现SQL分析插件的功能,包括:
[0126] 存储器401和处理器402。
[0127] 其中,所述存储器401用于存储计算机指令。
[0128] 所述处理器402用于执行所述存储器存储的计算机指令,具体执行上述实施例公开的结构化查询语言的处理的方法。
[0129] 本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令用于执行上述实施例公开的结构化查询语言的处理方法。
[0130] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存
在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖
非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要
素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备
所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在
包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0131] 以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应
视为本申请的保护范围。