利用10053事件生成一个 SQL 分析过程的 trace 文件,分析一下执行计划的生成过程,看看到底是没有使用索引还是因为索引的成本比较大而选择了全表扫描。
先进行表分析:
exec dbms_ststs.gather_table_stats(user,'tablename',cascade=>true);
开启10053事件:
alter session set events '10053 trace name context forever,level 1';
执行sql:
explain plan for 要运行的sql
关闭命令:
alter session set events '10053 trace name context off';
trace 文件的目录:$ORACLE_BASE/admin/sid/udump
---------------
索引是这些列的组合索引还是每一列上都有索引?