实用命令--检查数据库中全表扫描和Fast Full Index 扫描的sql

windex000 2019-03-10

概述

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

实用命令--检查数据库中全表扫描和Fast Full Index 扫描的sql


思路:从 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;

实用命令--检查数据库中全表扫描和Fast Full Index 扫描的sql

查找 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;

实用命令--检查数据库中全表扫描和Fast Full Index 扫描的sql


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

实用命令--检查数据库中全表扫描和Fast Full Index 扫描的sql

相关推荐