过分析表和索引,更改优化模式,来提高检索速度。

Oracle默认优化模式是CHOOSE,在这种情况下,如果表没有经过分析,经常导致查询使用全表扫描,而不使用索引。这通常导致磁盘I/O太多,而导致查询很慢。如果没有使用执行计划稳定性,则应该把表和索引都分析一下,这样可能直接会使查询速度大幅提升。

分析表命令可以用ANALYZE TABLE 分析索引可以用ANALYZE INDEX命令。

对于少于100万的表,可以考虑分析整个表,对于很大的表,可以按百分比来分析,但是百分比不能过低,否则生成的统计信息可能不准确。

可以通过DBA_TABLES的LAST_ANALYZED列来查看表是否经过分析或分析时间,索引可以通过DBA_INDEXES的LAST_ANALYZED列。

通过SET AUTOTRACE ON 来查看语句的执行计划,通过SET TIMING ON 来查看语句运行时间。

analyze table tablename compute statistics;

分析表和分析索引的语句;

set pagesize 0

spool d:/analyze_tables.sql;

select 'analyze table '||owner||'.'||table_name||' compute statistics;' from dba_tables where owner='system';

spool off

spool spool d:/analyze_indexes.sql;

select 'analyze index '||owner||'.'||index_name||' compute statistics;' from dba_indexes where owner='system';

spool off

@d:/analyze_tables.sql

@d:/analyze_indexes.sql

也可以通过dbms_stats来分析表和索引

通过分析表和索引,查询速度得到极大提高。

最后修改:2021 年 09 月 30 日
如果觉得我的文章对你有用,请随意赞赏