...
Блок кода |
---|
|
select * from user_tables where table_name = 'T';
analyze table t delete statistics;
select num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len, avg_space_freelist_blocks,
num_freelist_blocks, sample_size, last_analyzed from user_tables
where table_name = 'T';
analyze table t compute statistics for table;
select num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len, avg_space_freelist_blocks,
num_freelist_blocks, sample_size, last_analyzed from user_tables
where table_name = 'T';
|
Статистика по индексам
Статистику по индексам можно посмотреть в словаре USER_INDEXES. Основная статистика -
- глубина индекса
- кол-во листовых блоков
- кол-во различн. ключей
- средн. кол-во лист. блоков на ключ
- средн. кол-во блоков данных на ключ
- кол-во узлов индекса
- фактор кластеризации (кол-во блоков, которое надо выбрать для выборки всех строк из таблицы по индексу)
Пример:
Блок кода |
---|
|
analyze table t delete statistics;
select blevel, leaf_blocks, distinct_keys, avg_leaf_blocks_per_key, avg_data_blocks_per_key,
clustering_factor, num_rows, sample_size, last_analyzed from user_indexes
where table_name = 'T' and index_name = 'T_I';
analyze table t compute statistics for all indexes;
select blevel, leaf_blocks, distinct_keys, avg_leaf_blocks_per_key, avg_data_blocks_per_key,
clustering_factor, num_rows, sample_size, last_analyzed from user_indexes
where table_name = 'T' and index_name = 'T_I';
|
Статистика по столбцам
Статистику по столбцам можно посмотреть в словаре USER_TAB_COLUMNS, USER_TAB_COL_STATISTICS. Статистика -
- кол-во различн. значений
- мин значение
- макс значение
- кол-во null
Пример:
Блок кода |
---|
|
select * from user_tab_columns where table_name = 'T' and column_name = 'I';
select * from user_tab_col_statistics where table_name = 'T' and column_name = 'I';
analyze table t delete statistics;
select * from user_tab_col_statistics where table_name = 'T' and column_name = 'I';
analyze table t compute statistics for all columns;
select * from user_tab_col_statistics where table_name = 'T' and column_name = 'I';
|
Данная статистика не содержит одну очень важную информацию - распределение значений по диапазонам. Для хранения этой информации используются гистограммы. Существует два типа гистограмм - частотные гистограммы и сбалансированные по высоте. Максимальное количество брикетов в гистограмме - 254. Если количество различных значений в столбце меньше указанного размера гистограммы, то строятся частотная гистограмма. В противном случае - сбалансированная по высоте.
Сбалансированные по высоте гистограммы содержат одинаковое количество строк в каждом брикете гистограммы. Значение ячейки соответствует максимальному значению столбца в группе. Частотные гистограммы содержат столько брикетов, сколько есть различных значений в столбце. Значение ячейки содержит количество строк со значениями столбца, меньше либо равными данному.
Пример:
Блок кода |
---|
|
analyze table t compute statistics for columns s size 254;
select endpoint_number, endpoint_value, substr(endpoint_actual_value, 1, 30)
from user_tab_histograms where table_name = 'T' and column_name = 'S';
analyze table t compute statistics for columns s size 8;
select endpoint_number, endpoint_value, substr(endpoint_actual_value, 1, 30)
from user_tab_histograms where table_name = 'T' and column_name = 'S';
analyze table t compute statistics for columns s size 254;
select endpoint_number, endpoint_value, substr(endpoint_actual_value, 1, 30)
from user_tab_histograms where table_name = 'T' and column_name = 'S';
select s, count(*) from t group by s;
|