发明名称 一种基于等价类的数据库内核查询优化方法
摘要 本发明适用软件领域,提供了一种基于等价类的数据库内核查询优化方法,所述方法包括:在查询语句进入子查询优化器之后,使用函数处理sql语句中关键词from之后以及关键词where之前的描述:处理显式连接的嵌套树结构或者一个没有指定连接方式的链表,提取表信息,获取表对象,初始化其包含的Col和Eclass位变量,填充链表RELS;处理sql语句中on之后和where之后的限制条件链表quals,依据Eclass位变量对限制条件进行传递;进入枚举器,依据Eclass位变量扩大计划搜索空间,枚举出更多的等价计划,进入代价计算器计算代价;获取最小代价的计划作为最终的执行计划,执行计划被编译成执行树,被传送到执行器中执行。本发明具有性能高的优点。
申请公布号 CN103678589A 申请公布日期 2014.03.26
申请号 CN201310681482.7 申请日期 2013.12.12
申请人 用友软件股份有限公司 发明人 宋晓眉
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 北京中恒高博知识产权代理有限公司 11249 代理人 刘洪京
主权项 一种基于等价类的数据库内核查询优化方法,其特征在于,所述方法包括:在触发查询优化后,进入子查询优化器之后,使用函数处理sql语句中关键词from之后以及关键词where之前的描述:进入显式连接的嵌套树结构或者是一个没有指定连接方式的链表,提取表信息,获取表对象,初始化其包含的Col和Eclass位变量,填充链表RELS;处理sql语句中on之后的限制条件链表quals; 处理sql语句中where之后的描述;遍历DISTINCT、ORDER BY、GROUP BY属于列特性的链表,根据Eclass变量找到其对应的等价类,将这些特性上升为整个等价类的特性;等价类将这些特性传递到它的每一个成员中;对等价类的每个成员添加这些特性可以为后面的优化操作使用;遍历sql中的quals链表,对每一个单目的qual找到对应的列,根据列对象REL的Eclass对象找到对应的唯一一个等价类,根据这个等价类的位图变量Col找到其他的列,将单目约束条件qual传送到这些列成员之中;进入枚举器,每当产生一对输入条件,判断一对输入条件在等价类中是否存在,如存在,进入代价计算器;获取最小代价的计划作为最终的执行计划,执行计划被编译成执行树,被传送到执行器中执行。
地址 100094 北京市海淀区北清路68号用友软件园