Итак, ваш запрос:
select /*+ index (rawdata idx_test) */
rawdata.*
from v_wis_cds_cp_rawdata_test rawdata
и вы хотите знать, почему Oracle выбирает сканирование INDEX FULL?
Ну, как сказала Алекс, причина кроется в подсказке "index (raw data idx_text)
". Это директива, которая сообщает оптимизатору Oracle: «при доступе к rawdata
используйте доступ к индексу для индекса idx_text
», что означает, что Oracle будет делать это, если это вообще возможно, - , даже если это не так. лучший план .
Подсказки не делают запросы быстрее автоматически. Это способ сообщить оптимизатору, что не делать.
Я видел подобные запросы раньше - иногда добавляется такая подсказка, чтобы вернуть строки в отсортированном порядке, фактически не выполняя сортировку. Однако, если бы это было требованием, я настоятельно рекомендовал бы добавить предложение ORDER BY в любом случае, потому что, если подсказка станет недействительной по какой-либо причине (например, индекс будет удален или переименован), сортировка больше не произойдет, и ошибки не будет быть сообщенным.
Если вам не нужны строки, возвращаемые в каком-либо определенном порядке, я предлагаю вам удалить подсказку и посмотреть, улучшится ли производительность.