заставить Oracle использовать индексы над запросами DB-Link - PullRequest
0 голосов
/ 28 февраля 2020

Я использую хранимые процедуры на экземпляре БД "A" для хранения данных в GTT. Чтобы получить исходные данные, мне нужно go через DB-Link к экземпляру БД "B". Для этого я собрал весь запрос и отправил его на удаленный экземпляр БД.

Это отлично работает. Но иногда кажется, что Oracle не использует лучший способ или правильные индексы для запросов. Есть ли способ заставить Oracle использовать указанные c индексы? Я пытался использовать подсказки, но, честно говоря, я не понимаю разницу между всеми этими вариантами.

Спасибо за помощь!

1 Ответ

0 голосов
/ 28 февраля 2020

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

Сначала определите, есть ли проблема. Все запросы занимают слишком много времени? Лишь некоторые? Только первый?

Самое простое, что нужно сделать, это убедиться, что индексы в этой таблице обновлены. Затем посмотрите на оптимизацию запроса с помощью функции плана объяснения , чтобы увидеть, какие индексы используются.

Также целесообразно проверить ваши данные, чтобы увидеть, выбирает ли запрос разные вещи или разные количество записей, если оно основано на времени.

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