|
|
|
Индекс, игнорирование поля - план оптимизации
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Имею индекс create index ...........(F1,F2,F3) Делаю поиск where F1='...' and F2='...' or F1='...' and F 3 ='...' Как в плане оптимизации должно отразиться это условие or F1='...' and F3='...' Имею в виду метод индексного доступа (предполагаю INDEX SKIP SCAN. но отрабатывает INDEX RANGE SCAN) Как должно быть ? Заранее благодарен ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2018, 23:16 |
|
||
|
Индекс, игнорирование поля - план оптимизации
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 09:23 |
|
||
|
Индекс, игнорирование поля - план оптимизации
|
|||
|---|---|---|---|
|
#18+
AlexFF__|, Вы уверены ? меня интересует, что и как должно отражиться в плане есть ключ состоит из трех полей (F1,F2,F3), а условие поиска состоит из первого и третьего поля (F1,F3) План говорит INDEX RANGE SCAN, но это возможно при поиске только по F1 остальное будет фетчиться через фильтр Predicate Information такая № - access(F1='...' and F3='....') filter (F3='....') Вот этот меня смущает filter (F3='....') - зачем если допуск по индексу А как и чем заставить работать именно по двум несмежным полям ключа и как это будет в плана ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 17:59 |
|
||
|
Индекс, игнорирование поля - план оптимизации
|
|||
|---|---|---|---|
|
#18+
HOME_X, Расставьте скоби, а то OR там смущает немного. При индексе из трех полей и только первое и третье в предикатах будет IRS по первому полю с фильтром по третьему. Можно создать еще индекс по третьему полю в надежде на INDEX JOIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 19:58 |
|
||
|
Индекс, игнорирование поля - план оптимизации
|
|||
|---|---|---|---|
|
#18+
HOME_X... (предполагаю INDEX SKIP SCAN. но отрабатывает INDEX RANGE SCAN) В данном случае Oracle дает вам план, степень полезности которого вы не можете оценить. Ваши ожидания хуже данной вам в виде плана действительности. Это прямо свидетельствует о сломанной или неправильно построенной системе ожиданий. HOME_XВот этот меня смущает filter (F3='....') - зачем если допуск по индексу По индексу не допуск, а доступ к данным. В норме фильтр у вас должен работать именно на индексе, до доступа к табличным блокам. И это лучшее, из того, что вы можете получить, если считать индексный доступ вообще желательным. HOME_XА как и чем заставить работать именно по двум несмежным полям ключа и как это будет в плана ? Почти наверно - всё уже сделано без вас. Осознание вами своего достоинства мешает не только показать это всему миру, но и понять это самостоятельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 21:55 |
|
||
|
Индекс, игнорирование поля - план оптимизации
|
|||
|---|---|---|---|
|
#18+
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='....') это смещение начальной границы диапазона, уточняет откуда начинать смотреть записи индекса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 22:38 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39619755&tid=1884245]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 363ms |

| 0 / 0 |
