|
|
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
Привет всем! Есть такая проблема: Имеется таблица TAB1 с парой десятков признаков. Поле A типа VARCHAR2 проиндексировано contex индексом, поле B тоже типа VARCHAR2 проиндексировано b-tree индексом. По таблице и индексам статистика собрана. При выполнения запроса типа: select A, B, C, D from TAB1 where contains(A, 'ЗНАЧЕНИЕ1') > 0 and B='ЗНАЧЕНИЕ2'; оптимизатор использует индекс по полю B, если сделать трейс, то в принципе выбор оптимизатора понятен, стоимость скана по индексу поля B в районе 17k, а по полю A в районе 117k. Время выполнения запроса со сканированием индекса по полю В в районе минуты, но если с помощью хинта заставить использовать индекс по полю А, либо исключить из условия поле В, то время выполнения запроса около секунды. Возникает вопрос: Как заставить оптимизатор использовать индекс по полю А без изменения запроса, т.к. запрос генерирует приложение, код которого изменить нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 09:54 |
|
||
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
orcl_1989, насколько я понял, SQL-запрос формируется динамически и не имеет стабильного sql_id. В такой ситуации в голову приходит только cursor_sharing + профиль поможет или нет, не знаю, никогда так не делал. А вообще, лучше, конечно, избавиться от литералов и перейти на бинд-переменные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 12:03 |
|
||
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
Завысить стоимость индекса по B через установку статистики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 12:36 |
|
||
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
Только нужно помнить, что в этом случае могут поплыть планы других запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 12:49 |
|
||
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Вы имеете ввиду через dbms_stats.set_index_stats? Была такая мысль, но поле с b-tree индексом часто используетсяя и в других запросах в разных комбинациях, соответственно поплывут планы много где. В идеале было бы хорошо занизить стоимость в contex индексе. Вопрос как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 13:06 |
|
||
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
Как вариант: Код: plsql 1. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 16:30 |
|
||
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
orcl_1989 запрос генерирует приложение, код которого изменить нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 16:32 |
|
||
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
Но наверное можно поискать и найти как можно повысить привлекательность CONTEXT-индекса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 16:34 |
|
||
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Да код изменить нельзя. Как привлекательность индекса увеличить пока найти не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 16:49 |
|
||
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
Провокационный вброс: "соответственно поплывут планы много где" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 16:56 |
|
||
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
orcl_1989Да код изменить нельзя. Ну тогда SQL profile... SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 17:01 |
|
||
|
contex индекс и оптимизатор
|
|||
|---|---|---|---|
|
#18+
Там литералы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 17:02 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39586989&tid=1884542]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 320ms |

| 0 / 0 |
