|
|
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
Поиском (ORA-08102 fbi) по форуму не нашел, как обойти проблему. Индекс нужен для поиска по таблице. Сейчас есть FULL SCAN, индексы на ID есть. Код: sql 1. 2. 3. 4. Была идея функция c 2-мя параметрами (t1.id, t1.val) c селектом из t2, и return nvl(t2.val, t1.val) Не уникальный индекс по ф-ии на t1. При Update ловлю ORA-08102: index key not found. Вот и вопрос - кто как решает проблему с таким поиском (nvl(t2.val, t1.val)) ЗЫ. ORACLE 12.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2017, 13:48 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
mat. view не предлагать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2017, 14:00 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous Запрос динамически формируется на клиенте. Фильтры разные могут быть, но однотипные - t1 постоянна, t2 - разные таблицы. ЗЫ. Про мат. вью ссылку не скинете, применительно к данной проблеме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2017, 14:29 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
Может есть рекомендацииЗапрос динамически формируется на клиенте.CBO не достаточно умен чтоб додуматься до concatenation в этом случае. Распиши через union all. Код: plaintext 1. 2. 3. 4. 5. 6. Или если ID уникальны Код: plaintext 1. 2. 3. 4. 5. 6. Чтоб не было полных сканирований должны быть 4 индекса: по каждому из id и по каждому из val. Может есть рекомендацииЗЫ. Про мат. вью ссылку не скинете, применительно к данной проблеме.Вероятно предлагается строить MV по соединению и на нее индекс, чтоб потом задействовалось query rewrite, но к подобным костылям лучше прибегать уже в самых запущенных случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2017, 14:38 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop Спасибо, могу играться только с фильтром. Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2017, 15:00 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
На поиграться: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2017, 15:22 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, спасибо еще раз, интересное решение, не знал про Код: plsql 1. 2. 3. 4. 5. Что смущает 1. bitmap index - на боевой, активно изменяемой БД. 2. BITMAP INDEX FULL SCAN 3. select /*+ index(t1 dropme_jidx)*/ * - это не могу, могу только and filter, хранится в поле таблицы, и при вводе пользователем какого либо фильтра, подставляется еще один AND........ Прошу прощения, что ввел в заблуждение с ИД, хотя по логике должны быть unique. но........ Пример максимально приближенный к реальному положению дел Игрался так Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. Поэтому вариант с Код: plsql 1. 2. 3. 4. кажется более приемлимым ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2017, 15:59 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
Может есть рекомендацииandrey_anonymous, спасибо еще раз, интересное решение, не знал про 2. BITMAP INDEX FULL SCAN Это только моделька для игрищ, не решение. Я просто вспомнил про join index и попробовал "с ходу" впихнуть его - пока неудачно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2017, 16:05 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
Вообще похоже на факты и измерения. Если есть возможность переформулировать запросы - посмотрите, может найдете что-то полезное: https://logicalread.com/oracle-11g-best-uses-bitmap-join-index-mc02/#.We83Qxu7W00 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2017, 16:07 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
Переделал порядка 8-ми однотипных фильтров, все залетало, план строится, начиная с подзапроса с UNION. Но на одном фильтре, беда, которая зависит от колонки в селекте, это ф-я по индексированной колонке (не уникальный) Если ее убрать из запроса все хорошо, раскомментить план летит, начинается НЕ с подзапроса, если просто добавить эту колонку, тоже хорошо. В запросе куча подобных ф-ий, и вот с одной беда Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Пробовал переделывать ф-ю, убирал дерминистик, сносил индекс на справочнике (9000 записей) по (ид, наме) - доступ только индексу, по ИД (ключ ) не трогал, жестко прибил кардинальность, ничего не помогает. С чем может быть связано такое поведение(куча однотипных ф-ий, и только на одной такая беда)? Какие варианты еще можно попробовать, ф-ю править могу (но в ней простой селект по ПК). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:29 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
Может есть рекомендации(но в ней простой селект по ПК). Уверены что по ПК? мож full scan идет из-за неявных преобразований, или там из-за nls зы для теста, вместо ф-ции ,(select xxx frim ttt where ....=t1.col3) .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:40 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
,(select xxx frim ttt where ....=t1.col3) так то же пробовал, все отлично. план строится, начиная с подзапроса в IN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 11:59 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
Может есть рекомендации,(select xxx frim ttt where ....=t1.col3) так то же пробовал, все отлично. план строится, начиная с подзапроса в IN смотреть внимательней ф-цию, что в ней не так для проверки добавить в начале ф-ции if (p_code is not null) then return p_code; end if; если все отлично, то проблема в коде ф-ции .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 12:22 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
В функции, как раз и есть кусок в начале, наподобие if (p_code is not null) then return p_code; end if; только if p_code is null then return null; end if; в отличии от других ф-ий. Пробовал этот кусок убирать, не помогает. ЗЫ. Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production ЗЫЫ. Сейчас заметил, если f_3(t1.col3), (select xxx frim ttt where ....=t1.col3) вместе в запросе, то то же все отлично, комментишь (select xxx frim ttt where ....=t1.col3) , все летит cost c 50 взлетает до 370.000 Беда....... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 13:01 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
Может есть рекомендацииничего не помогаетПланы показывай для медленого и быстрого с приведением конкретного текста запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 13:19 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
Может есть рекомендацииВ функции, как раз и есть кусок в начале, наподобие if (p_code is not null) then return p_code; end if; только if p_code is null then return null; end if; в отличии от других ф-ий. Пробовал этот кусок убирать, не помогает. ЗЫ. Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production ЗЫЫ. Сейчас заметил, если f_3(t1.col3), (select xxx frim ttt where ....=t1.col3) вместе в запросе, то то же все отлично, комментишь (select xxx frim ttt where ....=t1.col3) , все летит cost c 50 взлетает до 370.000 Беда....... я предлагал сделать аля null ф-цию, добавив для теста в начале if (p_code is not null) then return p_code; end if; время выполнения не будет зависеть от тела ф=ции, если будет дальше плохо, то проблема не в ф-ции, а в плане возможно добавление t1.col3 в запрос меняет план ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 13:20 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
Может есть рекомендации, Со стоимостью функций еще можешь играться (пример 17664121 ), но я рекомендовал бы этого избежать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 13:24 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
Стас, от тела ф-ии не зависит, я же писал: Код: plsql 1. Да, если закомментить, остальные условия Код: sql 1. 2. тоже все отлично, план строится начиная с подзапроса с юнион dbms_photoshop насчет оригинальных планов все понимаю, но не могу )))) а подзапрос один в один, также с хинтами ЗЫ. Ладно, всем спасибо за участие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 14:14 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
FBI + DETERMINISTIC и ORA-08102:насчет оригинальных планов все понимаю, но не могуНе буду уточнять, что в плане возможно заменить руками имена объектов, если ты не можешь сделать изолированный test case для одного запроса. Обычно если человек в состоянии сделсть test case, то он и пофиксить может исходный случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 14:24 |
|
||
|
FBI + DETERMINISTIC и ORA-08102: index key not found
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop ПЛОХО Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. ХОРОШО Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 14:54 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39565802&tid=1884777]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 389ms |

| 0 / 0 |
