Oracle 工具:Analyze

  ㈠ 三大功能
    
     ① 搜集和删除索引、表和簇的统计信息
     ② 验证表、索引和簇的结构
     ③ 鉴定表和簇和行迁移和行链接
     针对analyze的搜集和删除统计信息功能而言
     Oracle推荐使用DBMS_STATS包来代替analyze搜集优化信息
     DBMS_STATS可以并行的搜集信息,可以搜集分区表的全局信息
     进一步来说,CBO只会使用DBMS_STATS包所统计出来的信息
         
  ㈡ 先决条件
 
     ① 在自己的方案中
     ② 或有analyze any system 的权限
      
  ㈢ 语法
 
     ANALYZE
       { TABLE [ schema.]table
           [ PARTITION ( partition ) | SUBPARTITION ( subpartition ) ]
       | INDEX [ schema. ]index
           [ PARTITION ( partition ) | SUBPARTITION ( subpartition ) ]
       | CLUSTER [ schema. ]cluster
       }
      
       { COMPUTE [ SYSTEM ] STATISTICS [for_clause]
       | ESTIMATE [ SYSTEM ] STATISTICS [for_clause][SAMPLE integer { ROWS | PERCENT }]
       | validation_clauses
       | LIST CHAINED ROWS [ into_clause ]
       | DELETE [ SYSTEM ] STATISTICS
       } ;
      
     注释:
       ① INDEX index:对索引进行分析,分析的结果会放在USER_INDEXES, ALL_INDEXES,或 DBA_INDEXES中
      
       ② TABLE table:对表进行分析,分析的结果会放在USER_TABLES, ALL_TABLES, and DBA_TABLES表中
                                   分析表的限制:
                                              不可以分析数据字典表
                                              不可以分析扩展表,但可以用DBMS_STATS来实现这个目的
                                              不可以分析临时表
                                              不可以计算或估计下列字段类型:
                                              REFs, varrays, nested tables, LOBs , LONGs, or object types
                          
       ③ CLUSTER cluster:对簇进行分析,分析的结果会放在ALL_CLUSTERS, USER_CLUSTERS and DBA_CLUSTERS
      
       ④ compute_statistics_clause
           语法:COMPUTE [ SYSTEM ] STATISTICS [for_clause]
                对分析对象进行精确的统计,然后把信息存储的数据字典中。可以选择对表或对字段进行分析
                computed和estimated这两种方式的统计数据都被优化器用来影响sql的执行计划
                如果指定system选项就只统计系统产生的信息
          for_clause:
               FOR TABLE:只统计表
               FOR COLUMNS:只统计某个字段
               FOR ALL COLUMNS:统计所有字段
               FOR ALL INDEXED COLUMNS:统计索引的所有字段
              
       ⑤ ESTIMATE [ SYSTEM ] STATISTICS [for_clause][SAMPLE integer { ROWS | PERCENT }]
          只是对部分行做一个大概的统计。适用于大表
          SAMPLE:指定具体统计多少行,如果忽略这个参数的话,oracle会默认为1064行
          ROWS causes:行数 Oracle to sample integer rows of the table or cluster or integer entries from the index. The integer must be at least 1.
          PERCENT causes:百分数
         
       ⑥ validation_clauses
           分析REF或是对像的结构
           例如:
           ANALYZE TABLE employees VALIDATE STRUCTURE CASCADE;
           ANALYZE TABLE customers VALIDATE REF UPDATE;
           通常用于物理和逻辑的一致性检查

你可能感兴趣的:(Oracle 工具:Analyze)