|
|
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
SYmikronТеоретический вопрос для понимания. пропущено... Ты зашорился в своей ситуации. Oracle понятия не имеет "живой" ли unusable индекс или нет. Вот тебе пример "дохлого" индекса Я вроде чётко вопрос обрисовал, но попробуем ещё раз. Я вижу ошибку "ORA-01502", я понимаю что она значит. Я не понимаю почему ораклу естъ дело до этого индекса. Зачем ему этот индекс на удалении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 22:43 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikronЯ не понимаю почему ораклу естъ дело до этого индекса. Зачем ему этот индекс на удалении? Если нет PK/UK + SKIP_UNUSABLE_INDEXES то ему этот индекс и при INSERT и UPDATE и DELETE побоку. А если есть constraint PK/UK то могут быть таблицы дети a при DELETE (или UPDATE) проверка таблиц детей осуществляется через PK/UK индекс папаши. В принципе Oracle мог бы проверить есть ли таблицы дети и если нет то разрешать DELETE при SKIP_UNUSABLE_INDEXES, enabled PK/UK и его unusable индексе но зачем так заморачиваться? SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 00:07 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
SYА если есть constraint PK/UK то могут быть таблицы дети a при DELETE (или UPDATE) проверка таблиц детей осуществляется через PK/UK индекс папаши. SY. "Дети" это referencing tables? Не логично: для проверки констраинтов "детей" при удалении в "родителе" индекс "родителя" не нужен. Нужен индекс на таблицах "детей". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 11:00 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikronЯ не понимаю почему ораклу естъ дело до этого индекса. Зачем ему этот индекс на удалении?xtenderораклу для поддержки уникальности нужен валидный индекс, соответственно при отключении индекса, оракл будет ругаться при изменении ключа уникальности, независимо какая DML операция проходит и даже, если этот констрейнт deferred (естественно, кроме вставки/удаления NULL'ов и апдейта на то же значение). Еще раз: Для проверки уникальности оракл пользуется связанным индексом. Соответственно, для поддержки уникальности оракл должен быть уверен, что все его изменения проходят без ошибок, т.е индекс актуален. Простой пример: Код: 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. зы. Ну и кроме того, нет смысла усложнять код отдельными проверками при разных операциях (insert/update/merge...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 19:51 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
xtenderЕще раз: Для проверки уникальности оракл пользуется связанным индексом. Соответственно, для поддержки уникальности оракл должен быть уверен, что все его изменения проходят без ошибок, т.е индекс актуален. Причинноследственная связь нарушена. проходят без ошибок != индекс актуален. И ваш пример тому подтверждение: оракл различает что меняем. Вы можете привести пример удаления, который бы нарушил unique constraint? xtenderзы. Ну и кроме того, нет смысла усложнять код отдельными проверками при разных операциях (insert/update/merge...) IMHO проверки на вставку и удаление очень разные. Об усложнении кода тут вряд ли стоит рассчитывать. Конкуренты Оракла не ленятся и заработывют бонусы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 20:19 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikronпроходят без ошибок != индекс актуален.будет пример в контексте сабжа? По-моему, вполне очевидно, что если индекс не валиден, значит нельзя использовать его для проверок. mikronИ ваш пример тому подтверждение: оракл различает что меняем.У меня сильное подозрение, что вы не поняли пример. Можете объяснить своими словами, что в примере происходит? mikronКонкуренты Оракла не ленятся и заработывют бонусы :) Какие именно конкуренты? Postgres и DB2 не позволяют отключать индексы, их можно только дропнуть вместе с констрейнтом. Чтобы заработали бонусы, они должны хотя бы научиться временно их отключать. А в MS SQL отключение индекса, автоматически отключает связанные с ним констрейнты, хорошо хоть выводит, что именно наотключал. Так про что речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 00:29 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39750562&tid=1883014]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 428ms |

| 0 / 0 |
