Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1150472
  • 博文数量: 178
  • 博客积分: 2776
  • 博客等级: 少校
  • 技术积分: 2809
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-22 15:36
文章分类

全部博文(178)

文章存档

2014年(3)

2013年(66)

2012年(109)

分类: Oracle

2012-10-31 16:14:59

一、语义检查
这个阶段,数据库会去判断SQL语句是否真正具有相应的含义,比如说sql语句涉及的表,或者字段是否存在等。
3. shared pool check(shared sql area check)
数据库执行一个shared pool check 去确定它是否可以跳过资源集中的几个步骤。
然后,数据库使用hash算法为每个sql语句生成hash值。那就是sql_id v$sql.sql_id.(sql语句shared pool check当匹配到了相同hash value 的时候,还需要其他的检查,比如说语义检查,以及系统环境,比如不同的数据库参数、不同的用户、不同的session环境等,都有可能有影响)
二、优化
在SQL语句的优化阶段,可以分为下面几个步骤。
1.优化器接收解析后的语句,并且生成一组基于sql语句可能的访问路径和hints的执行计划
2.优化器评估每个基于数据字典中统计信息的执行计划的cost。cost 是 预估值。
3.优化器比较并且选择最低cost的执行计划。作为查询计划,交给row source 生产器。
优化器的三个主要组件如下图所示:
 
阅读(2276) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~