一种数据库查询优化系统及方法技术方案

技术编号:15763250 阅读:40 留言:0更新日期:2017-07-06 00:32
本发明专利技术涉及一种数据库查询优化系统及方法,包括select语法优化模块、join语法优化模块、where子句优化模块和聚合函数优化模块;本发明专利技术的有益效果是:提供一个数据库查询优化系统,对查询时间长,查询效率低的sql语句进行重写,以及对此sql语句所涉及的需要筛选或排序的列建立索引,实现sql语句的动态自调优,保证优化效果,且优化后不影响查询结果,有效减少查询时间,提高查询效率。

System and method for optimizing inquiry of database

The invention relates to a system and method for query optimization of database, including select module, join syntax grammar optimization optimization module, the where clause aggregation function optimization module and optimization module; the beneficial effect of the invention is to provide a system of database query optimization, query for a long time, the low efficiency of SQL query rewrite, and this involved the SQL statement needs to be filtered or sorted column is indexed, realize the dynamic tuning of the SQL statement, to ensure the optimization results, and the optimization does not affect the query results, effectively reduce the query time, improve query efficiency.

【技术实现步骤摘要】
一种数据库查询优化系统及方法
本专利技术涉及数据库查询
,特别涉及一种数据库查询优化系统及方法。
技术介绍
随着信息化和互联网技术的发展,企业信息系统越来越多地参与到企业的管理当中。高效的管理大批量数据对于大多数的计算机应用领域都是至关重要的。数据库管理系统是使得单个或多个用户可以方便有效地管理并操纵大量数据的系统软件,它作为数据处理和管理的标准工具,已经逐步成为现代信息系统的基础和核心。为了使信息系统能够在各领域中稳定、高效的运行,其中最重要方面之一就是保证数据库的访问性能。可在信息和数据量激增的当下,网络间数据传输繁忙,信息系统的数据库数据访问量也变的越来越大,数据库系统性能开始下降,严重时甚至影响到相关的应用系统。这些对信息系统的数据库访问性能造成了很大的压力,数据库的效率的要求也变得越来越高,普通的数据库技术己不能快速、高效的完成与服务器数据库的数据交互。查询是数据库系统中最基本和常用的一种操作,查询是否具有较高的执行速度,已成为数据库用户和设计者极其关心的问题。为了提高数据库系统的性能,对查询进行优化是必不可少的,现今大型商业数据库管理系统的成功很大程度上要归功于查询优化技术的发展和应用。但现有的查询优化主要是采用人工调优,数据库管理系统向数据库管理员提供一些可调的资源参数,数据库管理员根据经验和当前负载特征,调整这些资源参数,以达到查询优化的目的;其需要消耗人力,且优化效果取决于数据库管理员的经验,不能获得有效保证。
技术实现思路
本专利技术所要解决的技术问题是提供一种动态自动调优的数据库查询优化系统及方法。本专利技术解决上述技术问题的技术方案如下:一种数据库查询优化系统,包括select语法优化模块、join语法优化模块、where子句优化模块和聚合函数优化模块;所述select语法优化模块,其用于查询待优化sql语句是否包含select*语法;是,则根据所述待优化sql语句的查询需求,将所述select*语法中的*替换为查询目标字段,再驱动join语法优化模块工作;否,则直接驱动join语法优化模块工作;所述join语法优化模块,其用于查询所述待优化sql语句是否包含join语法;是,则对所述join语法所连接的表的列建立索引,再驱动where子句优化模块工作;否,则直接驱动where子句优化模块工作;所述where子句优化模块,其用于查询所述待优化sql语句是否包含where子句;是,则对所述where子句进行优化,再驱动聚合函数优化模块工作;否,则直接驱动聚合函数优化模块工作;所述聚合函数优化模块,其用于查询所述待优化sql语句是否包含聚合函数;是,则在所述聚合函数所操作的列创建索引,再结束操作;否,则直接结束操作。本专利技术的有益效果是:提供一个数据库查询优化系统,对查询时间长,查询效率低的sql语句进行重写,以及对此sql语句所涉及的需要筛选或排序的列建立索引,实现sql语句的动态自调优,保证优化效果,且优化后不影响查询结果,有效减少查询时间,提高查询效率。在上述技术方案的基础上,本专利技术还可以做如下改进。进一步,所述系统还包括查询模块;所述查询模块,其用于查询数据库慢查询日志,根据各sql语句的查询时间和效率,获取所述待优化sql语句。采用上述进一步方案的有益效果是:自动查询需要优化的sql语句,进一步实现sql语句的动态自调优。进一步,所述join语法优化模块包括主键索引创建单元和外键索引创建单元;所述主键索引创建单元,其用于查询所述join语法所连接的表的主键是否有索引;是,则直接驱动外键索引创建单元工作;否,则在所述主键上创建索引,再驱动外键索引创建单元工作;所述外键索引创建单元,其用于查询所述join语法所连接的表的外键是否有索引;是,则直接驱动where子句优化模块工作;否,则在所述外键上创建索引,再驱动where子句优化模块工作。采用上述进一步方案的有益效果是:在join语法所连接的表的主键和外键上分别创建索引,进一步提高查询效率。进一步,所述where子句优化模块对所述where子句进行优化包括:如果所述where子句包含NOT操作符,则对所述NOT操作符进行重写,如果所述待优化sql语句的查询结果的数据量超过预设值,则在所述where子句所筛选的列创建索引,如果所述待优化sql语句包含orderby子句,则在所述orderby子句所指向的有序列上创建索引;其中,对所述NOT操作符进行重写为获取所述NOT操作后面紧跟的操作符;当所述紧跟的操作符为!=,则将所述紧跟的操作符替换为=,并删除所述NOT操作符;当所述紧跟的操作符为=,则将所述紧跟的操作符替换为!=,并删除所述NOT操作符;当所述紧跟的操作符为<=,则将所述紧跟的操作符替换为>,并删除所述NOT操作符;当所述紧跟的操作符为<,则将所述紧跟的操作符替换为>=,并删除所述NOT操作符;当所述紧跟的操作符为>=,则将所述紧跟的操作符替换为<,并删除所述NOT操作符;当所述紧跟的操作符为>,则将所述紧跟的操作符替换为<=,并删除所述NOT操作符。采用上述进一步方案的有益效果是:减少where子句中NOT操作符的个数,以及where子句所涉及的需要筛选或排序的列建立索引,进一步提高查询效率。进一步,所述系统还包括创建存储过程模块;所述创建存储过程模块,其用于判断经所述聚合函数优化模块处理后的所述待优化sql语句是否复杂;是,则将所述待优化sql语句的查询结果与所述待优化sql语句对应存储,再结束操作;否,则直接结束操作。采用上述进一步方案的有益效果是:将复杂的sql语句与此sql语句的查询结果对应存储,后期涉及此sql语句时,可直接调用此sql语句的查询结果,进一步提高查询效率。本专利技术的另一技术方案如下:一种数据库查询优化方法,包括如下步骤:步骤1,查询待优化sql语句是否包含select*语法;是,则根据所述待优化sql语句的查询需求,将所述select*语法中的*替换为查询目标字段,再执行步骤2;否,则直接执行步骤2;步骤2,查询所述待优化sql语句是否包含join语法;是,则对所述join语法所连接的表的列建立索引,再执行步骤3;否,则直接执行步骤3;步骤3,查询所述待优化sql语句是否包含where子句;是,则对所述where子句进行优化,再执行步骤4;否,则直接执行步骤4;步骤4,查询所述待优化sql语句是否包含聚合函数;是,则在所述聚合函数所操作的列创建索引,再结束操作;否,则直接结束操作。在上述技术方案的基础上,本专利技术还可以做如下改进。进一步,所述步骤1前还包括:查询数据库慢查询日志,根据各sql语句的查询时间和效率,获取所述待优化sql语句。进一步,对所述join语法所连接的表的列建立索引包括如下步骤:步骤a,查询所述join语法所连接的表的主键是否有索引;是,则直接执行步骤b;否,则在所述主键上创建索引,再执行步骤b;步骤b,查询所述join语法所连接的表的外键是否有索引;是,则直接执行步骤3;否,则在所述外键上创建索引,再执行步骤3。进一步,所述步骤3中对所述where子句进行优化包括:如果所述where子句包含NOT操作符,则对所述NOT操作符进本文档来自技高网...
一种数据库查询优化系统及方法

【技术保护点】
一种数据库查询优化系统,其特征在于,包括select语法优化模块、join语法优化模块、where子句优化模块和聚合函数优化模块;所述select语法优化模块,其用于查询待优化sql语句是否包含select*语法;是,则根据所述待优化sql语句的查询需求,将所述select*语法中的*替换为查询目标字段,再驱动join语法优化模块工作;否,则直接驱动join语法优化模块工作;所述join语法优化模块,其用于查询所述待优化sql语句是否包含join语法;是,则对所述join语法所连接的表的列建立索引,再驱动where子句优化模块工作;否,则直接驱动where子句优化模块工作;所述where子句优化模块,其用于查询所述待优化sql语句是否包含where子句;是,则对所述where子句进行优化,再驱动聚合函数优化模块工作;否,则直接驱动聚合函数优化模块工作;所述聚合函数优化模块,其用于查询所述待优化sql语句是否包含聚合函数;是,则在所述聚合函数所操作的列创建索引,再结束操作;否,则直接结束操作。

【技术特征摘要】
1.一种数据库查询优化系统,其特征在于,包括select语法优化模块、join语法优化模块、where子句优化模块和聚合函数优化模块;所述select语法优化模块,其用于查询待优化sql语句是否包含select*语法;是,则根据所述待优化sql语句的查询需求,将所述select*语法中的*替换为查询目标字段,再驱动join语法优化模块工作;否,则直接驱动join语法优化模块工作;所述join语法优化模块,其用于查询所述待优化sql语句是否包含join语法;是,则对所述join语法所连接的表的列建立索引,再驱动where子句优化模块工作;否,则直接驱动where子句优化模块工作;所述where子句优化模块,其用于查询所述待优化sql语句是否包含where子句;是,则对所述where子句进行优化,再驱动聚合函数优化模块工作;否,则直接驱动聚合函数优化模块工作;所述聚合函数优化模块,其用于查询所述待优化sql语句是否包含聚合函数;是,则在所述聚合函数所操作的列创建索引,再结束操作;否,则直接结束操作。2.根据权利要求1所述一种数据库查询优化系统,其特征在于,所述系统还包括查询模块;所述查询模块,其用于查询数据库慢查询日志,根据各sql语句的查询时间和效率,获取所述待优化sql语句。3.根据权利要求1所述一种数据库查询优化系统,其特征在于,所述join语法优化模块包括主键索引创建单元和外键索引创建单元;所述主键索引创建单元,其用于查询所述join语法所连接的表的主键是否有索引;是,则直接驱动外键索引创建单元工作;否,则在所述主键上创建索引,再驱动外键索引创建单元工作;所述外键索引创建单元,其用于查询所述join语法所连接的表的外键是否有索引;是,则直接驱动where子句优化模块工作;否,则在所述外键上创建索引,再驱动where子句优化模块工作。4.根据权利要求1所述一种数据库查询优化系统,其特征在于,所述where子句优化模块对所述where子句进行优化包括:如果所述where子句包含NOT操作符,则对所述NOT操作符进行重写,如果所述待优化sql语句的查询结果的数据量超过预设值,则在所述where子句所筛选的列创建索引,如果所述待优化sql语句包含orderby子句,则在所述orderby子句所指向的有序列上创建索引;其中,对所述NOT操作符进行重写为获取所述NOT操作后面紧跟的操作符;当所述紧跟的操作符为!=,则将所述紧跟的操作符替换为=,并删除所述NOT操作符;当所述紧跟的操作符为=,则将所述紧跟的操作符替换为!=,并删除所述NOT操作符;当所述紧跟的操作符为<=,则将所述紧跟的操作符替换为>,并删除所述NOT操作符;当所述紧跟的操作符为<,则将所述紧跟的操作符替换为>=,并删除所述NOT操作符;当所述紧跟的操作符为>=,则将所述紧跟的操作符替换为<,并删除所述NOT操作符;当所述紧跟的操作符为>,则将所述紧跟的操作符替换为<=,并删除所述NOT操作符。5.根据权利要求1至4中任一项所述一种数据库查询优化系...

【专利技术属性】
技术研发人员:彭凯李俊峰马威
申请(专利权)人:武汉珞佳伟业科技有限公司
类型:发明
国别省市:湖北,42

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

1