[发明专利]一种数据库查询优化系统及方法在审
申请号: | 201710107320.0 | 申请日: | 2017-02-27 |
公开(公告)号: | CN106919678A | 公开(公告)日: | 2017-07-04 |
发明(设计)人: | 彭凯;李俊峰;马威 | 申请(专利权)人: | 武汉珞佳伟业科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京轻创知识产权代理有限公司11212 | 代理人: | 杨立,李蕾 |
地址: | 430000 湖北省武汉市东湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据库 查询 优化 系统 方法 | ||
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语句包含order by子句,则在所述order by子句所指向的有序列上创建索引;
其中,对所述NOT操作符进行重写为获取所述NOT操作后面紧跟的操作符;
当所述紧跟的操作符为!=,则将所述紧跟的操作符替换为=,并删除所述NOT操作符;
当所述紧跟的操作符为=,则将所述紧跟的操作符替换为!=,并删除所述NOT操作符;
当所述紧跟的操作符为<=,则将所述紧跟的操作符替换为>,并删除所述NOT操作符;
当所述紧跟的操作符为<,则将所述紧跟的操作符替换为>=,并删除所述NOT操作符;
当所述紧跟的操作符为>=,则将所述紧跟的操作符替换为<,并删除所述NOT操作符;
当所述紧跟的操作符为>,则将所述紧跟的操作符替换为<=,并删除所述NOT操作符。
5.根据权利要求1至4中任一项所述一种数据库查询优化系统,其特征在于,所述系统还包括创建存储过程模块;
所述创建存储过程模块,其用于判断经所述聚合函数优化模块处理后的所述待优化sql语句是否复杂;是,则将所述待优化sql语句的查询结果与所述待优化sql语句对应存储,再结束操作;否,则直接结束操作。
6.一种数据库查询优化方法,其特征在于,包括如下步骤:
步骤1,查询待优化sql语句是否包含select*语法;是,则根据所述待优化sql语句的查询需求,将所述select*语法中的*替换为查询目标字段,再执行步骤2;否,则直接执行步骤2;
步骤2,查询所述待优化sql语句是否包含join语法;是,则对所述join语法所连接的表的列建立索引,再执行步骤3;否,则直接执行步骤3;
步骤3,查询所述待优化sql语句是否包含where子句;是,则对所述where子句进行优化,再执行步骤4;否,则直接执行步骤4;
步骤4,查询所述待优化sql语句是否包含聚合函数;是,则在所述聚合函数所操作的列创建索引,再结束操作;否,则直接结束操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉珞佳伟业科技有限公司,未经武汉珞佳伟业科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710107320.0/1.html,转载请声明来源钻瓜专利网。