[发明专利]一种数据库查询优化方法、装置、及计算机设备有效
| 申请号: | 201811013928.8 | 申请日: | 2018-08-31 |
| 公开(公告)号: | CN109241101B | 公开(公告)日: | 2020-06-30 |
| 发明(设计)人: | 姚莹莹;肖意;李阳;潘毅;蒋志勇 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
| 主分类号: | G06F16/2453 | 分类号: | G06F16/2453 |
| 代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 林祥 |
| 地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 数据库 查询 优化 方法 装置 计算机 设备 | ||
1.一种数据库查询优化方法,所述方法包括:
接收客户端发送的数据查询请求;
对所述数据查询请求进行解析,根据解析结果确定用于执行所述数据查询请求的执行计划;
若所述执行计划为嵌套循环反连接,则确定所述数据查询请求所指示的待查询数据表中的待查询字段是否具有存在NULL值的可能性;
若所述待查询字段具有存在NULL值的可能性,则生成过滤条件,并基于所述过滤条件对所述执行计划进行优化,其中,所述过滤条件至少包括以下两个条件:对于左表中待查询字段的字段值,其在右表的待查询字段中出现;右表中待查询字段的字段值中存在NULL值;所述过滤条件的语义为:若满足所述过滤条件中的任一条件,则不对嵌套循环反连接中的外层循环当前遍历到的值做输出处理。
2.根据权利要求1所述的方法,所述确定所述数据查询请求所指示的待查询数据表中的待查询字段是否具有存在NULL值的可能性,包括:
确定所述数据查询请求所指示的待查询数据表中待查询字段的NULL属性;
若所述待查询字段的NULL属性为默认状态,则确定所述待查询字段不具有存在NULL值的可能性;若所述待查询字段的NULL属性为非默认状态,则确定所述待查询字段具有存在NULL值的可能性;
其中,所述默认状态表示字段的值不允许为NULL值,所述非默认状态表示字段的值允许为NULL值。
3.根据权利要求1所述的方法,所述生成过滤条件包括:
确定所述待查询数据表中待查询字段的字段值的数据表现形式,所述数据表现形式为单值形式或向量形式;
根据所述数据表现形式生成过滤条件,其中,不同的数据表现形式所对应的过滤条件不同。
4.根据权利要求3所述的方法,所述根据所述数据表现形式生成过滤条件,包括:
若所述数据表现形式为单值形式,则生成的过滤条件为:filter[T_OP_OR,左表中待查询字段的字段值=右表中待查询字段的字段值,(T_OP_IS,左表中待查询字段的字段值,NULL),(T_OP_IS,右表中待查询字段的字段值,NULL)];
若所述表现形式为向量形式,则生成的过滤条件为:[T_OP_AND,LNNVL(左表中待查询字段的字段值中第1个数值!=右表中待查询字段的字段值中第1个数值),……,LNNVL(左表中待查询字段的字段值中第n个数值!=右表中待查询字段的字段值中第n个数值)],其中,n为待查询字段的字段值中数值的个数,且n为不小于2的自然数。
5.根据权利要求1所述的方法,所述基于所述过滤条件对所述执行计划进行优化,包括:
将所述过滤条件作为所述嵌套循环反连接中内层循环扫描的连接条件。
6.一种数据库查询优化装置,所述装置包括:
接收模块,用于接收客户端发送的数据查询请求;
解析模块,用于对所述数据查询请求进行解析,根据解析结果确定用于执行所述数据查询请求的执行计划;
确定模块,用于若所述执行计划为嵌套循环反连接,则确定所述数据查询请求所指示的待查询数据表中的待查询字段是否具有存在NULL值的可能性;
优化模块,用于若所述待查询字段具有存在NULL值的可能性,则生成过滤条件,并基于所述过滤条件对所述执行计划进行优化,其中,所述过滤条件至少包括以下两个条件:对于左表中待查询字段的字段值,其在右表的待查询字段中出现;右表中待查询字段的字段值中存在NULL值;所述过滤条件的语义为:若满足所述过滤条件中的任一条件,则不对嵌套循环反连接中的外层循环当前遍历到的值做输出处理。
7.根据权利要求6所述的装置,所述确定模块具体用于:
确定所述数据查询请求所指示的待查询数据表中待查询字段的NULL属性;若所述待查询字段的NULL属性为默认状态,则确定所述待查询字段不具有存在NULL值的可能性;若所述待查询字段的NULL属性为非默认状态,则确定所述待查询字段具有存在NULL值的可能性;
其中,所述默认状态表示字段的值不允许为NULL值,所述非默认状态表示字段的值允许为NULL值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811013928.8/1.html,转载请声明来源钻瓜专利网。





