• 多个表关联或者有视图套视图,快速检查SQL语句中所有的表统计信息是否过期


    多个表关联或者有视图套视图,快速检查SQL语句中所有的表统计信息是否过期
    现有如下SQL:
    select * from emp e,dept d where e.deptno=d.deptno;
     
    先用explain plan for命令,在plan_table中生成SQL的执行计划:
     
    SQL> explain plan for select * from emp e,dept d where e.deptno=d.deptno;
     
    Explained.
     
    然后使用下面脚本检查SQL语句中所有的表的统计信息是否过期:
     
    SQL> select owner, table_name, object_type, stale_stats, last_analyzed
    from dba_tab_statistics
    where (owner, table_name) in
    (select object_owner, object_name
    from plan_table
    where object_type like '%TABLE%'
    union
    select table_owner, table_name
    from dba_indexes
    where (owner, index_name) in
    (select object_owner, object_name
    from plan_table
    where object_type like '%INDEX%'));
     
    OWNER TABLE_NAME OBJECT_TYP STALE_STATS LAST_ANALYZED
    ---------- ---------- ---------- --------------- ------------------
    SCOTT DEPT TABLE NO 05-DEC-16
    SCOTT EMP TABLE YES 22-OCT-16
     
     
    最后可以使用下面脚本检查SQL语句中表统计信息的过期原因:
     
    select *
      from all_tab_modifications
     where (table_owner, table_name) in
           (select object_owner, object_name
              from plan_table
             where object_type like '%TABLE%'
            union
            select table_owner, table_name
              from dba_indexes
             where (owner, index_name) in
                   (select object_owner, object_name
                      from plan_table
                     where object_type like '%INDEX%'));
     
     
     
  • 相关阅读:
    Git的安装与配置
    JDBCTemplate
    消费金融大数据风控架构
    架构设计之道
    面向服务架构SOA
    java集合List解析
    web应用安全
    微服务的交互模式
    服务化管理和治理框架的技术选型
    分库分表就能无限扩容么?
  • 原文地址:https://www.cnblogs.com/liang545621/p/12611893.html
Copyright © 2020-2023  润新知