专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » sql调优:SQL 调优整理 »正文

sql调优:SQL 调优整理

来源: 发布时间:星期四, 2008年12月11日 浏览:22次 评论:0
="t18">
  1. 选用适合Oracle优化器
    ORACLE优化器共有3种:
    a. RULE (基于规则)  b. COST (基于成本) c. CHOOSE (选择性)
    设置缺省优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖.
    为了使用基于成本优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令,以增加数据库中对象统计信息(object statistics)准确性.
    假如数据库优化器模式设置为选择性(CHOOSE),那么实际优化器模式将和是否运行过analyze命令有关. 假如table已经被analyze过, 优化器模式将自动成为CBO , 反之,数据库将采用RULE形式优化器.
    在缺省情况下,ORACLE采用CHOOSE优化器, 为了避免那些不必要全表扫描(full table scan) , 你必须尽量避免使用CHOOSE优化器,而直接采用基于规则或者基于成本优化器.
   2.    访问Table方式
   ORACLE 采用两种访问表中记录方式:
   
  a.   全表扫描 
    全表扫描就是顺序地访问表中每条记录. ORACLE采用次读入多个数据块(database block)方式优化全表扫描.
  
  b.  通过ROWID访问表
      你可以采用基于ROWID访问方式情况,提高访问表效率, , ROWID包含了表中记录物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据物理位置(ROWID)之间联系. 通常索引提供了快速访问ROWID方法,因此那些基于索引列查询就可以得到性能上提高.
   3.    共享SQL语句
  为了不重复解析相同SQL语句,在第次解析之后, ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(system global area)共享池(shared buffer pool)中内存可以被所有数据库用户共享. 因此,当你执行个SQL语句(有时被称为个游标)时,假如它
  和之前执行过语句完全相同, ORACLE就能很快获得已经被解析语句以及最好

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: