Oracle性能调整的一些基本步骤

这两天对程序的sql进行调优总结了一些基本的调优步骤希望对大家有用。

 

首先,检查被索引的列或组合索引的首列是否出现在SQL语句的WHERE子句中,尽量确保WHERE子句中的列都建立了索引。

第2步,看采用了哪种类型的连接方式。ORACLE的共有Sort Merge Join(SMJ)、Hash Join(HJ)和Nested Loop Join(NL)。在两张表连接,且内表的目标列上建有索引时,只有Nested Loop才能有效地利用到该索引。SMJ即使相关列上建有索引,最多只能因索引的存在,避免数据排序过程。HJ由于须做HASH运算,索引的存在对数据查询速度几乎没有影响。

第3步,索引列值是否可为空(NULL)。如果索引列值可以是空值,在SQL语句中那些需要返回NULL值的操作,将不会用到索引。如COUNT(*),而是用全表扫描。这是因为索引中存储值不能为全空。 

第4步,索引列是否是函数的参数。如果是,索引在查询时用不上。 列如SELECT   *   FROM   TABLE   WHERE   to_number(LABLE)   >   50;这个时候LABLE上的索引是没用的。

第5步,看是否有用到并行查询(PQO)。并行查询将不会用到索引

最后,调整完后我们可以打开SQL*PLUS,输入“SET AUTOTRACE ON”,然后运行调整前和调整后的SQL语句。在给出查询结果后,ORACLE将显示相应的“执行计划”,包括优化器类型、执行代价、连接方式、连接顺序、数据搜索路径以及相应的连续读、物理读等资源代价。 对比各个指标看下调整的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值