Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Индекс, игнорирование поля - план оптимизации / 6 сообщений из 6, страница 1 из 1
22.03.2018, 23:16
    #39619164
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс, игнорирование поля - план оптимизации
Доброго дня господа !

Имею индекс
create index ...........(F1,F2,F3)

Делаю поиск
where F1='...' and F2='...'
or F1='...' and F 3 ='...'

Как в плане оптимизации должно отразиться это условие
or F1='...' and F3='...'

Имею в виду метод индексного доступа
(предполагаю INDEX SKIP SCAN. но отрабатывает INDEX RANGE SCAN)

Как должно быть ?

Заранее благодарен !
...
Рейтинг: 0 / 0
23.03.2018, 09:23
    #39619275
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс, игнорирование поля - план оптимизации
HOME_XДоброго дня господа !

Имею индекс
create index ...........(F1,F2,F3)

Делаю поиск
where F1='...' and F2='...'
or F1='...' and F 3 ='...'

Как в плане оптимизации должно отразиться это условие
or F1='...' and F3='...'

Имею в виду метод индексного доступа
(предполагаю INDEX SKIP SCAN. но отрабатывает INDEX RANGE SCAN)

Как должно быть ?

Заранее благодарен !
Код: plsql
1.
INLIST ITERATOR
...
Рейтинг: 0 / 0
23.03.2018, 17:59
    #39619755
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс, игнорирование поля - план оптимизации
AlexFF__|,

Вы уверены ? меня интересует, что и как должно отражиться в плане
есть ключ состоит из трех полей (F1,F2,F3), а условие поиска состоит из
первого и третьего поля (F1,F3)

План говорит INDEX RANGE SCAN, но это возможно при поиске только по F1
остальное будет фетчиться через фильтр

Predicate Information такая
№ - access(F1='...' and F3='....')
filter (F3='....')
Вот этот меня смущает filter (F3='....') - зачем если допуск по индексу

А как и чем заставить работать именно по двум несмежным полям ключа
и как это будет в плана ?
...
Рейтинг: 0 / 0
23.03.2018, 19:58
    #39619805
bevuber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс, игнорирование поля - план оптимизации
HOME_X,

Расставьте скоби, а то OR там смущает немного.
При индексе из трех полей и только первое и третье в предикатах будет IRS по первому полю с фильтром по третьему. Можно создать еще индекс по третьему полю в надежде на INDEX JOIN.
...
Рейтинг: 0 / 0
23.03.2018, 21:55
    #39619844
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс, игнорирование поля - план оптимизации
HOME_X...
(предполагаю INDEX SKIP SCAN. но отрабатывает INDEX RANGE SCAN)


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

HOME_XВот этот меня смущает filter (F3='....') - зачем если допуск по индексу

По индексу не допуск, а доступ к данным.
В норме фильтр у вас должен работать именно на индексе, до доступа к табличным блокам.
И это лучшее, из того, что вы можете получить, если считать индексный доступ вообще желательным.

HOME_XА как и чем заставить работать именно по двум несмежным полям ключа
и как это будет в плана ?
Почти наверно - всё уже сделано без вас.
Осознание вами своего достоинства мешает не только показать это всему миру, но и понять это самостоятельно.
...
Рейтинг: 0 / 0
23.03.2018, 22:38
    #39619861
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс, игнорирование поля - план оптимизации
HOME_XPredicate Information такая
№ - access(F1='...' and F3='....')
filter (F3='....')
Вот этот меня смущает filter (F3='....') - зачем если допуск по индексу

А как и чем заставить работать именно по двум несмежным полям ключа
и как это будет в плана ?
access определяет диапазон поиска по индексу
filter фильтрует записи индекса в данном диапазоне
так как у тебя есть условие эквивалентности 1 поля индекса, но нет ничего по 2, то естественно, что границы поиска очерчены только 1 полем (с небольшой поправкой)
а так как в условии есть 3 поле, то записи индекса в заданном диапазоне будут сразу фильтроваться по F3.
это и есть
№ - access(F1='...'
filter (F3='....')
осталось понять, откуда в access условие and F3='....')
это смещение начальной границы диапазона, уточняет откуда начинать смотреть записи индекса
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Индекс, игнорирование поля - план оптимизации / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]