Chinaunix首页 | 论坛 | 博客
  • 博客访问: 426695
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类: DB2/Informix

2008-06-17 23:44:49

启发式优化方法

我们前面所讲的优化方法,是通过估算来决定执行计划的成本,是一种基于代价的优化方法,也是数据库系统中最经常被使用的一种优化方法。它的主要缺点是优化本身也需要时间、需要消耗资源。优化器可以使用的另外一种优化方法称为启发式优化。

启发式优化方法,是一种基于规则的优化方法,就是事先在数据库系统中定义一系列的规则,每条规则都有不同的优先级别,规定了优化器对SQL语句的处理方式。优化器根据这些规则,按照优先级的高低,对SQL语句进行关系代数的等价转换,从而找到SQL语句最终的执行计划。

由于这些事先定义的规则是启发式的,并不总是有效。因此启发式优化方法的主要缺点是优化器并不能总是找到最优的执行计划,有时甚至是非常糟糕的执行计划。作为对这种优化方法的说明,下面是两条经常被使用到的启发式规则:

1)尽早执行选择运算

这条启发式规则,要求对SQL语句的执行,应尽可能早地使用查询条件,去掉不符合条件的记录,从而减少要处理的记录数目。体现在优化器的执行计划选择上,就是使用等价转换,将选择运算放置在执行计划的最优先位置上。

2)尽早执行投影运算

这条启发式规则,要求对SQL语句的执行,应尽可能早地使用投影运算,从数据表中选择结果集所需要的字段。优先执行投影运算,特别是对要产生中间结果集的SQL语句,将会减少内存空间的使用数量。

阅读(1866) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~