[发明专利]一种对多个相关谓词进行合并的方法在审
申请号: | 201710606871.1 | 申请日: | 2017-07-24 |
公开(公告)号: | CN107632999A | 公开(公告)日: | 2018-01-26 |
发明(设计)人: | 余鹏;李建辉;熊中哲;魏兴华;臧冰凌;李春;陈栋;张文件;罗春 | 申请(专利权)人: | 杭州沃趣科技股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 浙江杭知桥律师事务所33256 | 代理人: | 王梨华,陈丽霞 |
地址: | 310052 浙江省杭州市滨江区长河街道滨*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 相关 谓词 进行 合并 方法 | ||
技术领域
本发明涉及数据库技术领域,特别是涉及一种对多个相关谓词进行合并的方法。
背景技术
目前,在数据库处理SQL的过程主要分为三个阶段:
一、分析阶段:在这个阶段,数据库将来自客户端的标准结构化的查询语句(SQL),借助词法语法解析工具转换成数据库可以识别的数据结构——语法分析树。
二、查询优化阶段:数据库在语法分析树上面施加各种优化的方法(也就是数据库中常见的查询改写),然后为参与连接的表计算出一条最优的访问路径,最终生成一个结构来表示最优的查询计划。
三、执行查询计划阶段,执行最优的查询计划,最终获得结果。
在查询优化阶段,会将谓词尽可能下推到底层的表,然后计算谓词的选择率,从而确定每个表的访问方法,最终使用动态规划算法最终获得一个最优的表的连接路径。这个连接路径基本上确定了整个查询计划。
目前的数据库中针对谓词的处理比较简单,主要是假定谓词之间是相互独立的,因此在计算选择率时使用了概率统计中的经典公式来计算谓词的总体选择率的。例如,对于谓词A and B,假设A的选择率是PA,B的选择率是PB,那么A and B的选择率是PA*PB,对于A和B是独立不相关的情况下,这种计算问题不大,但是对于A和B是相关的情况下,误差比较大,例如:假设A实际是t1.a>50,而B是t1.a<52,a是表t1的一列,均匀分布且取值区间是1到100,那么按照传统的计算方式,t1.a>50and t1.a<52的概率是0.5*0.5=0.25,但是我们很容易能发现这两个条件的总选择率是0.01,与0.25相差了25倍。因此,将原本相关的谓词按照完全不相关的情况来计算选择率,很容易极大的误差。
这样大的误差,极其容易导致数据库为表选择一个错误的访问路径,从而最终导致数据库为SQL生成一个非常低效的查询计划。
发明内容
本发明针对现有技术中硬件要求高、渲染效率低的缺点,提供了一种对多个相关谓词进行合并的方法。
为了解决上述技术问题,本发明通过下述技术方案得以解决。
一种对多个相关谓词进行合并的方法,包括如下步骤:
S100、处理谓词表达式:将谓词表达式处理成父表达式为and操作符,且子表达式为基础表达式,基础表达式包括一元操作表达式和二元操作表达式,子表达式中的谓词或是用or操作符连接起来的表达式,消除重复表达式;
S200、优先遍历步骤S100中处理过的谓词表达式,合并谓词,进行递归处理,对谓词表达式,如是基础表达式,则退出,完成合并;如不是,则对表达式的参数进行合并。
作为优选,步骤S100中,消除重复表达式用布尔代数的公式进行推导,在推导的过程中,对发现的重复谓词进行消除。
作为优选,步骤S100中,一元操作表达式为参数是一个表的列名或一个常量,二元操作表达式为参数是一个表的列名和一个常量。
作为优选,步骤S200中,还包括:
S210、将表达式中的各个子表达式进行分组,将基础表达式根据表中的列名进行分组;
S220、对分组后的子表达式中的谓词进行合并,如是and表达式,进入步骤S230;如果是or表达式,进入到步骤S240;
S230、对and表达式下的分组,取交集,过程如下:交集结果初始化为常量true,遍历组内每个基础谓词,将当前谓词与交集结果取交集,如不存在交集则跳出,如存在则依次处理下一个基础谓词,直到完成所有组内基础谓词;
S240、对or表达式下的分组进行合并,取并集,过程如下:并集结果初始化为常量FALSE,遍历组内每个基础谓词,将当前谓词与交集结果取并集,如交集结果为TRUE,则退出;如不是TRUE,则依次处理下一个基础谓词。直到完成所有组内基础谓词;
S250、将合并之后的谓词表达式替换原有表达式,如合并之后的谓词表达式是常量,则根据谓词的输入,将谓词中可替换的表达式替换成常量,直到全部替换成当前表达式。
本发明由于采用了以上技术方案,具有显著的技术效果:本发明提供了合并多个半连接的方法,在查询优化阶段,将对于下推到同一个表的谓词表达式进行合并,从而:
一、减少了谓词的数量,在合并谓词的过程中,一方面可以将多个谓词取交集或是并集,从而减少了谓词的数量,一方面,可以及时推导出常量,从而使得可以尽早发现谓词中的常量,从而可以及时将整个表达式推导成TRUE或是FALSE,节约计算时间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州沃趣科技股份有限公司,未经杭州沃趣科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710606871.1/2.html,转载请声明来源钻瓜专利网。