Oracle-统计信息收集-TABLE

Oracle数据库,执行sql语句的时候,会根据统计信息选择最优执行计划,当执行性能比自己想象的慢时,就有可能是统计信息不是最新导致。

表的统计信息主要包含表的总行数(num_rows)、表的块数(blocks)以及行平均长度(avg_row_len)。

通过查询数据字典DBA_TABLES 查看表的统计信息

select owner, table_name, num_rows, blocks, avg_row_len
from dba_tables
where owner = 'SCOTT'
and table_name = 'T_TEST';

通过查询数据字典DBA_TAB_COL_STATISTICS查看表的常用列的统计信息。第一个列表示列名字,第二个列表示列的基数,第三个列表示列中NULL值的数量,第四个列表示直方图的桶数,最后一个列表示直方图类型。

select column_name, num_distinct, num_nulls, num_buckets, histogram
from dba_tab_col_statistics
where owner = 'SCOTT'
and table_name = 'T_TEST';