oracle sql语句_如何找出oracle执行全表扫描或者 Fast Full Index扫描的SQL语句

概述

很多时候我们在做优化的时候总会判断是不是全表扫描,看是不是需要建立索引,下面介绍怎么找出执行全表扫描或者 Fast Full Index 扫描的 SQL 语句,判断这些扫描是否是必要的,是否导致了比较差的执行计划,如果是,则需要调整这些 SQL 语句。

7dd3d458e7d36f9e9c27d030683825e4.png

思路:从 Oracle 9i 开始提供了一个视图 v$sql_plan,可以很快地帮助我们找到那些全表扫描或Fast Full Index 扫描的 SQL 语句,这个视图会自动忽略关于数据字典的 SQL 语句。

查找全表扫描的 SQL 语句

使用FTS的前提条件:在较大的表上不建议使用全表扫描,除非取出数据的比较多,超过总量的5% – 10%,或你想使用并行查询功能时。

select sql_text from v$sqltext t, v$sql_plan p where t.hash_value=p.hash_value and p.operation='TABLE ACCESS' and p.options='FULL' order by p.hash_value, t.piece; 
6620e65edefaa2cbe2b61376452ea260.png

查找 Fast Full Index 扫描的 SQL 语句:

索引快速全扫描(INDEX FAST FULL SCAN)和索引全扫描(INDEX FULL SCAN)极为类似,它也适用于所有类型的B树索引(包括唯一性索引和非唯一性索引)。和索引全扫描一样,索引快速全扫描也需要扫描目标索引所有叶子块的所有索引行。

select sql_text from v$sqltext t, v$sql_plan p where t.hash_value=p.hash_value and p.operation='INDEX' and p.options='FULL SCAN'order by p.hash_value, t.piece;
33b9c70e53d3c8738dd27ec553a9b39b.png

今天主要介绍怎么去查找数据库里面的全表扫描或Fast Full Index 扫描的 SQL 语句,后面再对FTS、index fast full scan、index full scan等等做个区别解释,感兴趣的朋友可以关注下!!

06299fa4015406dd93e5edf9b1260d1f.gif
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值