|
|
|
XMLTABLE при поиске по индексированным полям
|
|||
|---|---|---|---|
|
#18+
Добрый вечер, проблема в следующем. Имеется таблица с данными Код: plsql 1. 2. 3. 4. 5. Нужно найти среди некоторых значений те, которые существуют в данной таблице, делаю так Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Результат как и ожидается верный, 555. Но моя таблица индексирована Код: plsql 1. И тут начинаются проблемы, из-за индекса в ответ уже попадают все значения из xml таблицы(то есть 555, 1, 2, 3), но если оттуда убрать 555, то результат будет уже пуст. То есть хотя бы 1 попадающее значение тащит туда сразу все данные из xml таблицы. Если слегка изменить запрос на Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. вернут уже правильный результат, но данный запрос не хочется использовать из-за того, что данных в таблице много и мне важен факт присутствия записи в таблице, а не их количество. Тут кроется проблема в совместном использовании exists, XMLTABLE и индексированого поля, но поиск в интернете ничего не дал. Может кто-нибудь подсказать как решить данную проблему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 17:15 |
|
||
|
XMLTABLE при поиске по индексированным полям
|
|||
|---|---|---|---|
|
#18+
Popipo, Посмотри на планы с индексом и без. Возможно прокатит /*+ NO_XML_QUERY_REWRITE */ У себя на 11.2.0.4 воспроизвести не смог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 17:44 |
|
||
|
XMLTABLE при поиске по индексированным полям
|
|||
|---|---|---|---|
|
#18+
Popipo, если материализовать data, будет тож самое? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 18:00 |
|
||
|
XMLTABLE при поиске по индексированным полям
|
|||
|---|---|---|---|
|
#18+
Версия та же Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production хинт не изменил результат По тестпланам ничего определенного не видно. Нашел решение с заменой таблицы на Код: plsql 1. Но в будущем возможно потребуется использовать больше 1 столбца, буду благодарен если кто-то найдет решение. P.S. можно ли как-то врубить полное дебажное логгирование по запросу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 18:05 |
|
||
|
XMLTABLE при поиске по индексированным полям
|
|||
|---|---|---|---|
|
#18+
PopipoТут кроется проблема в совместном использовании exists, XMLTABLE и индексированого поля Бред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 18:06 |
|
||
|
XMLTABLE при поиске по индексированным полям
|
|||
|---|---|---|---|
|
#18+
если материализовать data, будет тож самое? Ух ты, хинт /*+ materialize */ Код: plsql 1. починил запрос, выдает 555. Видимо оптимизация ORACLE решила что-то сделать с парсингом. Спасибо за решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 18:12 |
|
||
|
XMLTABLE при поиске по индексированным полям
|
|||
|---|---|---|---|
|
#18+
ТеоретикPopipoТут кроется проблема в совместном использовании exists, XMLTABLE и индексированого поля Бред. Я всего лишь делаю выводы основываясь на фактах, если избавится от XMLTABLE, дропнуть индекс или использовать distinct + join то все работает корректно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 18:16 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39553786&tid=1884915]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
9ms |
get forum data: |
9ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 465ms |

| 0 / 0 |
