oracle mysql优化_oracle 中sql优化的几种方法

根据执行计划进行优化的一般步骤

将瓶颈sql块单独取出,查看其执行计划,

首先检查其中使用了全表扫描的对象,判断其是否合适。引发错误使用的情形通常是:

1)  没有建立合适的索引列导致全表扫描

2)  非函数索引列使用了函数引发全表扫描

3)   对象统计信息过旧或未收集导致全表扫描、

4)  对于位图索引,直方图信息的缺失有时也会导致错误的全表扫描

然后检查其中无用的表,确认无用的表可以直接去掉减少访问步骤减小系统开销。

接着检查其中是否有重复访问的表,查看是否可以减少访问次数一般可以通过使用with或者建立中间表来优化。

优化访问路径,数据库优化器也有不那么聪明的时候,有时候它生成的访问路径可能并不是最优的,可尝试使用hint来改变访问路径进行优化

常用hint:

/*+full( )*/表明对表选择全局扫描的方法.

/*+use_nl( )*/在多表关联查询中,指定使用nest loops方式进行多表关联。

/*+use_hast( )*/在多表关联查询中,指定使用hash join方式进行多表关联。

/*+index( )*/ 使用指定表的指定索引

/*+ append */ 以直接加载的方式将数据加载入库

/*+leading( )*/在多表关联查询中,指定哪个表作为驱动表,即告诉优化器首先要访问哪个表上的数据。

/*+ parallel() */ 在sql中指定执行的并行度,这个值将会覆盖自身的并行度

看Description的基数(执行结果返回的数据的行数)和自己预估的基数是否大致一直,不一致则考虑其它影响效率的情况,如统计信息比较旧等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值