Получение нескольких ИНДЕКСОВ_СТАТОВ из нескольких таблиц

#sql #oracle #tree

Вопрос:

Как я могу получить высоту индекса дерева B для нескольких таблиц. Другие индексы, такие как количество листовых блоков дерева. Как использовать INDEX_STATS для целевого набора таблиц? Например, ВЫСОТА, LF_BLKS…

Примеры таблиц, такие как Emp, Зарплата, Рейтинг

Ответ №1:

Вы можете легче просматривать базовую статистику индекса с помощью таких представлений словаря данных, как ALL_INDEXES :

 select owner, table_name, index_name, blevel, leaf_blocks from all_indexes where table_name in ('EMP', 'SALARY', 'RANKING') order by owner, table_name, index_name;  

INDEX_STATS содержит только информацию, собранную в ходе последней ANALYZE INDEX... операции, и ALL_INDEXES содержит всю последнюю статистику по каждому индексу, к которому у вас есть доступ. Но если ваша статистика не является актуальной, вам, возможно, потребуется собрать ее следующим образом:

 begin  dbms_stats.gather_index_stats(user, 'EMP_IDX'); end; /