Как узнать используется индекс или нет ORACLE DB?
Первый способ — это включить мониторинг использования индекса.
1) Сначала включаем мониторинг интересующих нас индексов
ALTER INDEX OWNER.INDEX_NAME MONITORING USAGE;
select io.name #b1b100;">as index_name from sys.obj$ io , sys.obj$ t , sys.ind$ i , sys.object_usage ou where i.obj# = ou.obj# and io.obj# = ou.obj# and t.obj# = i.bo#;
3) Выключаем мониторинг индекса
ALTER INDEX OWNER.INDEX_NAME NOMONITORING USAGE;
Есть также view V$OBJECT_USAGE, но она показывает данные только для текущей схемы.
Второй способ — это использования индекса в планах запроса
Для этого можно использовать следующий селект
select * from V$SQL_PLAN where object_name = upper('Имя индекса')
Если индекс используется, то он попадет в выборку. По sql_id можно в v$SQL можно найти достать текст sql запроса.
Источники
http://apps-oracle.ru/oracle_index_usage/
https://oracle-base.com/articles/10g/index-monitoring