Заставить оракула использовать индекс - PullRequest
4 голосов
/ 29 ноября 2009

Есть ли способ заставить оракула использовать индекс, кроме подсказок?

Ответы [ 5 ]

7 голосов
/ 29 ноября 2009

Oracle не использует индекс, когда считает, что индекс

  • отключен
  • недействительно (например, после огромной загрузки данных и статистики об индексе не были обновлены)
  • не поможет (например, когда в 5 миллионах строк есть только два разных значения)

Итак, первое, что нужно проверить, это то, что индекс включен, а затем выполнить правильную команду GATHER в вашем индексе / таблице / схеме. Когда это не помогает, Oracle считает, что загрузка вашего индекса на самом деле займет больше времени, чем загрузка фактических значений строк. В этом случае добавьте больше столбцов в индекс, чтобы он выглядел более «разнообразным».

7 голосов
/ 29 ноября 2009

Нет. И если оптимизатор не использует индекс, у него обычно есть на то веские причины. Использование индекса, если индекс плохой, может на самом деле замедлить ваши запросы.

1 голос
/ 29 ноября 2009

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

Вы можете добавить подсказки в запрос, которые позволят ему выглядеть более выгодно в одном индексе по сравнению с другим.

В целом, если вы собрали хорошую статистику по всем таблицам и индексам, Oracle обычно реализует очень хорошие планы выполнения.

0 голосов
/ 01 декабря 2009

Да, технически вы можете заставить Oracle использовать индекс (без подсказок) в одном сценарии: если таблица является таблицей, организованной по индексу, то логически единственный способ сделать запрос к таблице - через ее индекс, поскольку существует нет таблицы для запроса.

0 голосов
/ 29 ноября 2009

Если ваш запрос не включает индексированное поле в свои условия, то БД будет глупо использовать индекс. Итак, я второй ответ Донни.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...