Получить запрос, который вызывает индекс

#oracle #oracle12c

#Oracle #oracle12c

Вопрос:

Я использую Oracle 12c. И на основе DBA_INDEX_USAGE я могу определить, какие индексы можно использовать, а какие нет. Мой вопрос: есть ли какой-либо способ получить именно запрос, который использует индекс?

Спасибо!

Комментарии:

1. Проверьте план запроса вашего SQL как место для начала. В общем, вы не управляете, какой индекс будет использовать Oracle. Скорее, вы пишете наилучший запрос, который вы можете, возможно, используя индексы, а затем позволяете Oracle принимать наилучшее решение о выполнении.

2. @TimBiegeleisen Я знаю это, но ваш ответ не был ответом на мое желание. Теперь у меня есть план перепроектировать все индексы в моей базе данных (~ 500 индексов), поэтому я должен знать количество запросов, использующих индекс, а также структурировать запрос, который вызывает индекс. Большое спасибо!

3. Я также использую oracle12c и не могу видеть представление с именем DBA_INDEX_USAGE

4. Обновление: Теперь я могу ответить на свой вопрос. Чтобы определить, какие индексы можно использовать, а какие нет, я использую DBA_INDEX_USAGE. Чтобы проверить, точно ли запрос использует индекс, сначала я использую dba_hist_sqlstat для получения SQL_ID, затем я использую v $ sqltext для получения всех запросов к этому индексу. Обратите внимание, что: полный текст в v $ sqltext просто сохраняется в течение 7 дней.