一种基于逻辑优化的数据库查询优化方法

文档序号:6508445阅读:330来源:国知局
一种基于逻辑优化的数据库查询优化方法
【专利摘要】本发明公开了一种基于逻辑优化算法的数据快速查询方法,包括简化条件集,本发明通过简化条件集,从而实现快速查询的目的,且适合分布式应用。
【专利说明】一种基于逻辑优化的数据库查询优化方法
【技术领域】
[0001]本发明涉及关系型数据库查询优化领域,本发明公开了一种基于逻辑优化算法的数据快速查询方法。
【背景技术】
[0002]目前主流数据库优化查询方式基本上都是基于某种具体的RDBMS系统进行的,并且都是某种程度上运用了某种具体的关系数据库的特性进行优化。这种现状导致对通用的RDBMS系统缺乏统一和高效的优化查询方法和理论支持。在局部应用和小规模应用,问题还不突出。一但涉及到用户分布式应用,甚至迁移和移植数据库,原有的优化策略将完全失效。

【发明内容】

[0003]针对上述问题,本发明公开了一种基于逻辑优化算法的数据快速查询方法,包括简化条件集,从而达到快速查询效果。
[0004]本发明采用如下技术方案:一种基于逻辑优化的数据库查询优化方法,包括简化条件集,条件集的简化包括如下步骤:
一、把不含任何“与”“或”运算符的逻辑表达式称为原子条件,只含有原子条件和“与”运算符的逻辑表达式称为条件项,定义条件集G= { g 1; g2,g 3"7?}称&为条件项(i=l, 2,3…η),以“,”表示析取符号V,其中gi由原子条件tu (j=l, 2,3, Hii)组成;
二、查询条件的文法定义如下:
条件集 G:<g> I <gi>or <gj>
条件项 g:<tn>and<tik>
原子条件 t:tn, ti2jti3—tim ;
三、查询语句的算法如下:
a.初始化:将各条件项g中的原子条件进行比较,若各条件项的原子条件中有相互包含关系,则将外延小的t舍去;初始量m=l (l<m<p, p为条件项数);
b.若m=p,转到(e),否则取G的一个条件项gm;
c.若项gm是一个原子条件tml,则:
将tml与各条件项gi (i>m)的t^.比较,若存在gk,其中包含tkj与tml相同,则将这部分gk与gm构成G的一个子集G ±,剩余元素构成子集C *,将G *的公共项提取出来,得到新的集合记作G * * ;
转至(b),递归调用本算法处理G * * ;
d.若项gm为两个或者两个以上的原子条件tmj和tmk(k ^ j)的and运算,则:
取第一个原子条件U,做(c)的处理,若G * *为非空集合,转至(b),递归调用本算法处理G * * ;
若G * *为空集合,取下一个原子条件,做(c)处理,直到G ^ *非空;e.重复上述b至d步骤,取遍G的全部条件项,所得新的G * *与提取的序列极为简化条件集。
[0005]本发明有益效果是:采用本发明适用于用户的分布式应用,且能实现快速查询。
[0006]
【专利附图】

【附图说明】
[0007]图1为本发明流程图。
[0008]
【具体实施方式】
[0009]下面结合流程图对本发明做更详细说明。
[0010]首先,任何“与” “或”运算符的逻辑表达式称为原子条件,只含有原子条件和“与”运算符的逻辑表达式称为条件项,定义条件集G= { g 1; g2,g 3"7?}称&为条件项(i=l, 2,3…η),以“,”表示析取符号V,其中gi由原子条件tu (j=l, 2,3, Hii)组成;
其次,查询条件的文法定义如下:
条件集 G:<g> I <gi>or <gj>
条件项 g:<tn>and<tik>
原子条件 t:tn, ti2jti3—tim ;
最后,查询语句的算法如下:
a.初始化:将各条件项g中的原子条件进行比较,若各条件项的原子条件中有相互包含关系,则将外延小的t舍去;初始量m=l (l<m<p, p为条件项数);
b.若m=p,转到(e),否则取G的一个条件项gm;
c.若项gm是一个原子条件tml,则:
将tml与各条件项gi (i>m)的t^.比较,若存在gk,其中包含tkj与tml相同,则将这部分gk与gm构成G的一个子集G ±,剩余元素构成子集C *,将G *的公共项提取出来,得到新的集合记作G * * ;
转至(b),递归调用本算法处理G * * ;
d.若项gm为两个或者两个以上的原子条件tmj和tmk(k ^ j)的and运算,则:
取第一个原子条件U,做(c)的处理,若G * *为非空集合,转至(b),递归调用本算法处理G * * ;
若G * *为空集合,取下一个原子条件,做(c)处理,直到G ^ *非空;
e.重复上述b至d步骤,取遍G的全部条件项,所得新的G* *与提取的序列极为简化条件集。
[0011]参阅图1,具体实施过程如下:
【权利要求】
1.一种基于逻辑优化的数据库查询优化方法,其特征在于:包括简化条件集,条件集的简化包括如下步骤: 一、把不含任何“与”“或”运算符的逻辑表达式称为原子条件,只含有原子条件和“与”运算符的逻辑表达式称为条件项,定义条件集G = { g 1; g2,g 3"7?}称&为条件项(i=l, 2,3…η),以“,”表示析取符号V,其中gi由原子条件tu (j=l, 2,3, Hii)组成; 二、查询条件的文法定义如下:
条件集 G:<g> I <gi>or <gj>
条件项 g:<tn>and<tik>
原子条件 t:tn, ti2jti3—tim ; 三、查询语句的算法如下: a.初始化:将各条件项g中的原子条件进行比较,若各条件项的原子条件中有相互包含关系,则将外延小的t舍去;初始量m=l (l<m<p, p为条件项数); b.若m=p,转到(e),否则取G的一个条件项gm; c.若项gm是一个原子条件tml,则: 将tml与各条件项gi (i>m)的t 比较,若存在gk,其中包含tkj与tml相同,则将这部分gk与gm构成G的一个子集G ±,剩余元素构成子集C *,将G *的公共项提取出来,得到新的集合记作G * * ; 转至(b),递归调用本算法处理G * * ; d.若项gm为两个或者两个以上的原子条件tmj和tmk(k j)的and运算,则: 取第一个原子条件U,做(c)的处理,若G * *为非空集合,转至(b),递归调用本算法处理G * * ; 若G * *为空集合,取下一个原子条件,做(c)处理,直到G -k *非空; e.重复上述b至d步骤,取遍G的全部条件项,所得新的G* *与提取的序列极为简化条件集。
【文档编号】G06F17/30GK103455573SQ201310365120
【公开日】2013年12月18日 申请日期:2013年8月21日 优先权日:2013年8月21日
【发明者】范高生 申请人:成都云鹰科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1