ANALYZE

对于analyze table使用的一些探究

首先创建四个临时表t1,t2,t3,t4,和他们相对应的索引
  1. create table t1 as select * from user_objects;
  2. create table t2 as select * from user_objects;
  3. create table t3 as select * from user_objects;
  4. create table t4 as select * from user_objects;
  5. create unique index pk_t1_idx on t1(object_id);
  6. create unique index pk_t2_idx on t2(object_id);
  7. create unique index pk_t3_idx on t3(object_id);
  8. create unique index pk_t4_idx on t4(object_id);
复制代码
查看这个时候各个表对应的数据库统计信息(表,字段,索引)
  1. --查看表的统计信息
  2. select table_name,num_rows,blocks,empty_blocks from user_table where table_names in ('T1','T2','T3','T4');
  3. TABLE_NAME        NUM_ROWS        BLOCKS        EMPTY_BLOCKS
  4. T1                        
  5. T2                        
  6. T3                        
  7. T4                        

  8. --查看字段的统计信息
  9. select table_name,column_name,num_distinct,low_value,high_value,density from user_tab_columns where table_name in ('T1','T2','T3','T4');
  10. TABLE_NAME        COLUMN_NAME        NUM_DISTINCT        LOW_VALUE        HIGH_VALUE        DENSITY
  11. T1        OBJECT_NAME                                
  12. T1        SUBOBJECT_NAME                                
  13. T1        OBJECT_ID                                
  14. T1        DATA_OBJECT_ID                                
  15. T1        OBJECT_TYPE                                
  16. T1        CREATED                                
  17. T1        LAST_DDL_TIME                                
  18. T1        TIMESTAMP                                
  19. T1        STATUS                                
  20. T1        TEMPORARY                                
  21. T1        GENERATED                                
  22. T1        SECONDARY                                
  23. T2        OBJECT_NAME                                
  24. T2        SUBOBJECT_NAME                                
  25. T2        OBJECT_ID                                
  26. T2        DATA_OBJECT_ID                                
  27. T2        OBJECT_TYPE                                
  28. T2        CREATED                                
  29. T2        LAST_DDL_TIME                                
  30. T2        TIMESTAMP                                
  31. T2        STATUS                                
  32. T2        TEMPORARY                                
  33. T2        GENERATED                                
  34. T2        SECONDARY                                
  35. T3        OBJECT_NAME                                
  36. T3        SUBOBJECT_NAME                                
  37. T3        OBJECT_ID                                
  38. T3        DATA_OBJECT_ID                                
  39. T3        OBJECT_TYPE                                
  40. T3        CREATED                                
  41. T3        LAST_DDL_TIME                                
  42. T3        TIMESTAMP                                
  43. T3        STATUS                                
  44. T3        TEMPORARY                                
  45. T3        GENERATED                                
  46. T3        SECONDARY                                
  47. T4        OBJECT_NAME                                
  48. T4        SUBOBJECT_NAME                                
  49. T4        OBJECT_ID                                
  50. T4        DATA_OBJECT_ID                                
  51. T4        OBJECT_TYPE                                
  52. T4        CREATED                                
  53. T4        LAST_DDL_TIME                                
  54. T4        TIMESTAMP                                
  55. T4        STATUS                                
  56. T4        TEMPORARY                                
  57. T4        GENERATED                                
  58. T4        SECONDARY                                

  59. --查看索引的统计信息
  60. select table_name,index_name,blevel,leaf_blocks,distinct_keys,
  61.         avg_leaf_blocks_per_key avg_leaf_blocks,avg_data_blocks_per_key avg_data_blocks,clustering_factor,num_rows
  62. from user_indexes where table_name in ('T1','T2','T3','T4');
  63. TABLE_NAME        INDEX_NAME        BLEVEL        LEAF_BLOCKS        DISTINCT_KEYS        AVG_LEAF_BLOCKS        AVG_DATA_BLOCKS        CLUSTERING_FACTOR        NUM_ROWS
  64. T1        PK_T1_IDX                                                        
  65. T2        PK_T2_IDX                                                        
  66. T3        PK_T3_IDX                                                        
  67. T4        PK_T4_IDX                                                       
复制代码
现在我们分别对这个表做不同形式的analyze table处理
  1. analyze table t1 compute statistics for table;
  2. analyze table t2 compute statistics for all columns;
  3. analyze table t3 compute statistics for all indexed columns;
  4. analyze table t4 compute statistics;
复制代码
我们再回头看看这是的oracle数据库对于各种统计信息
  1. --这是对于表的统计信息
  2. select table_name,num_rows,blocks,empty_blocks from user_tables where table_name in ('T1','T2','T3','T4');
  3. TABLE_NAME        NUM_ROWS        BLOCKS        EMPTY_BLOCKS
  4. T1        3930        55        1
  5. T2                        
  6. T3                        
  7. T4        3933        55        1
  8. --我们可以据此得出结论,只有我们在analyze table命令中指定了for table或者不指定任何参数的时候,oracle数据库才会给我们统计基于表的统计信息

  9. --这是对于表中字段的统计信息
  10. select table_name,column_name,num_distinct,low_value,high_value,density from user_tab_columns where table_name in ('T1','T2','T3','T4');
  11. TABLE_NAME        COLUMN_NAME        NUM_DISTINCT        LOW_VALUE        HIGH_VALUE        DENSITY
  12. T1        OBJECT_NAME                                
  13. T1        SUBOBJECT_NAME                                
  14. T1        OBJECT_ID                                
  15. T1        DATA_OBJECT_ID                                
  16. T1        OBJECT_TYPE                                
  17. T1        CREATED                                
  18. T1        LAST_DDL_TIME                                
  19. T1        TIMESTAMP                                
  20. T1        STATUS                                
  21. T1        TEMPORARY                                
  22. T1        GENERATED                                
  23. T1        SECONDARY                                
  24. T2        OBJECT_NAME        3823        41423030        D3F1BBB736D4C2B7DDCFFABBA7C7E5B5A5        .000270447891062615
  25. T2        SUBOBJECT_NAME        77        503031        52455354        .012987012987013
  26. T2        OBJECT_ID        3930        C304062D        C30F4619        .000254452926208651
  27. T2        DATA_OBJECT_ID        3662        C304062D        C30F4619        .000273074822501365
  28. T2        OBJECT_TYPE        15        4441544142415345204C494E4B        56494557        .000127194098193844
  29. T2        CREATED        3684        7867081E111F33        7868071211152F        .000547559423988464
  30. T2        LAST_DDL_TIME        3574        7867081E11251B        7868071211152F        .000565522924083892
  31. T2        TIMESTAMP        3649        323030332D30382D33303A31363A33303A3530        323030342D30372D31383A31363A32303A3436        .000559822349362313
  32. T2        STATUS        2        494E56414C4944        56414C4944        .000127194098193844
  33. T2        TEMPORARY        2        4E        59        .000127194098193844
  34. T2        GENERATED        2        4E        59        .000127194098193844
  35. T2        SECONDARY        2        4E        59        .000127194098193844
  36. T3        OBJECT_NAME                                
  37. T3        SUBOBJECT_NAME                                
  38. T3        OBJECT_ID        3931        C304062D        C30F461A        .000254388196387688
  39. T3        DATA_OBJECT_ID                                
  40. T3        OBJECT_TYPE                                
  41. T3        CREATED                                
  42. T3        LAST_DDL_TIME                                
  43. T3        TIMESTAMP                                
  44. T3        STATUS                                
  45. T3        TEMPORARY                                
  46. T3        GENERATED                                
  47. T3        SECONDARY                                
  48. T4        OBJECT_NAME        3825        41423030        D3F1BBB736D4C2B7DDCFFABBA7C7E5B5A5        .000261437908496732
  49. T4        SUBOBJECT_NAME        77        503031        52455354        .012987012987013
  50. T4        OBJECT_ID        3932        C304062D        C30F461B        .000254323499491353
  51. T4        DATA_OBJECT_ID        3664        C304062D        C30F461B        .00027292576419214
  52. T4        OBJECT_TYPE        15        4441544142415345204C494E4B        56494557        .0666666666666667
  53. T4        CREATED        3685        7867081E111F33        78680712111530        .000271370420624152
  54. T4        LAST_DDL_TIME        3575        7867081E11251B        78680712111530        .00027972027972028
  55. T4        TIMESTAMP        3650        323030332D30382D33303A31363A33303A3530        323030342D30372D31383A31363A32303A3437        .000273972602739726
  56. T4        STATUS        2        494E56414C4944        56414C4944        .5
  57. T4        TEMPORARY        2        4E        59        .5
  58. T4        GENERATED        2        4E        59        .5
  59. T4        SECONDARY        2        4E        59        .5
  60. /*
  61. 在这个结果中我们可以看到,oracle数据库给t2,t4的所有字段都做了统计信息.
  62. 对表t3的object_id(索引字段)做了统计信息.
  63. 由此得出结论,
  64. 在指定for all columns 和不指定任何参数的时候oracle会给所有字段做统计信息,在指定for indexed columns时,oracle只给[b]有索引的字段进行字段信息统计[/b],如果我们别有必要给所有字段统计信息时,这个属性就很有用了.
  65. */

  66. --这里是对于索引的统计信息
  67. select table_name,index_name,blevel,leaf_blocks,distinct_keys,
  68.         avg_leaf_blocks_per_key avg_leaf_blocks,avg_data_blocks_per_key avg_data_blocks,clustering_factor,num_rows
  69. from user_indexes where table_name in ('T1','T2','T3','T4');
  70. TABLE_NAME        INDEX_NAME        BLEVEL        LEAF_BLOCKS        DISTINCT_KEYS        AVG_LEAF_BLOCKS        AVG_DATA_BLOCKS        CLUSTERING_FACTOR        NUM_ROWS
  71. T1        PK_T1_IDX                                                        
  72. T2        PK_T2_IDX                                                        
  73. T3        PK_T3_IDX                                                        
  74. T4        PK_T4_IDX        1        9        3932        1        1        2143        3932

  75. --从这里我们可以看出,只有表t4有索引统计信息.
  76. --再综合前面的我们就会发现,如果在运行analyze table是我们不指定参数,oracle将收集对于特定表的所有统计信息(表,索引,表字段的统计信息)
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值