|
|
|
Партиционирование индекса по нескольким колонкам
|
|||
|---|---|---|---|
|
#18+
Добрый день, Сразу прошу прощения, что если вопрос регулярный и решение можно найти на каждом углу. Прошу ткнуть пальцем. Искал, не нашел. Проблема следующего характера сделал партиционирование для таблицы. Есть индекс, который состоит из нескольких колонок: sysid char(4) year char(4) doc_id char(10) Все обращения к индексу всегда идут с указанием всех 3 полей. Цель сделать индекс глобальным, но при этом использовать RANGE партиционирование по doc_id. Подскажите, как это можно сделать? Сейчас ругается, что есть префиксные колонки. Была мысль сделать партиционирование по функции, которая будет делать concatenate(sysid, year, doc_id), но тоже не получилось. Подскажите, как это можно решить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2016, 13:27:00 |
|
||
|
Партиционирование индекса по нескольким колонкам
|
|||
|---|---|---|---|
|
#18+
gVitalikЦель сделать индекс глобальным, но при этом использовать RANGE партиционирование по doc_id. Global non-prefixed индекс не поддерживается, что означает partitioning key поле должно быть первым в глобальном партиционированом индексе: Код: 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2016, 18:14:58 |
|
||
|
Партиционирование индекса по нескольким колонкам
|
|||
|---|---|---|---|
|
#18+
SY, Спасибо! А возможно в качестве распределения использовать CONCATENATE по нескольким колонкам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2016, 19:17:05 |
|
||
|
Партиционирование индекса по нескольким колонкам
|
|||
|---|---|---|---|
|
#18+
Ты сначала обьясни в чем у тебя проблема. Чем тебе не угодил локальный партицированный индекс? SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2016, 21:37:50 |
|
||
|
Партиционирование индекса по нескольким колонкам
|
|||
|---|---|---|---|
|
#18+
gVitalik, если у тебя всегда используется все три колонки, то ты можешь спокойно поставить socks на первую позицию в индексе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2016, 10:57:16 |
|
||
|
Партиционирование индекса по нескольким колонкам
|
|||
|---|---|---|---|
|
#18+
SY, Локальный индекс не подходит, потому что таблица разбивается по полю, которого нет в индексе. Почти все индексы, которые можно было сделать локальными, я сделал. Но колонок с датами в таблице несколько и в некоторых индексах используется партиционируемая колонка, а в некоторых индексах используется другая дата. Есть индексы, без дат, но с уникальными номерами объектов. Тем не менее я хочу и их тоже разбить на партиции. Почему спросил про concatenate, потому что в моем случае перестановка полей все равно выдоло ошибку: ORA-14038: GLOBAL partitioned index must be prefixed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 11:10:10 |
|
||
|
Партиционирование индекса по нескольким колонкам
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Боюсь не знаю, что такое socks. Киньте, пожалуйста, линк, потому что все что я нашел, это ссылки на сокеты и настройку сетевых параметров ORACLE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 11:52:53 |
|
||
|
Партиционирование индекса по нескольким колонкам
|
|||
|---|---|---|---|
|
#18+
gVitalikЛокальный индекс не подходит, потому что таблица разбивается по полю, которого нет в индексе.То есть вы хотите, чтобы индекс был партиционирован, но при этом он не содержал вообще ключа партиционирования? Само собой так не получится. Как вы это себе представляете? И собственно как вы это представляете к использованию? Допустим, у вас бы получилось создать такой индекс. Но сами запросы бы у вас были без ключа партиционирования, правильно?(иначе чтобы вам мешало локальный индекс сделать). То есть был бы перебор всех партиций, так? И в чём фишка вашей задумки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 13:16:56 |
|
||
|
Партиционирование индекса по нескольким колонкам
|
|||
|---|---|---|---|
|
#18+
Для глобального индекса ключ секционирования индекса не обязательно равен ключу секционирования таблицы, но он должен быть первым в этом индексе Раз все равно задаются условия для всех трех колонок, то порядок их в индексе для тебя не очень важен (есть конечно ньюансы для COMPRESSED индексов), поэтому ставь колонку разбиения индекса первой. Что и пытался тебе донести MasterZiv (но что-то пошло не так ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 13:23:28 |
|
||
|
Партиционирование индекса по нескольким колонкам
|
|||
|---|---|---|---|
|
#18+
JaRo, Задумка использовать глобальный индекс. Но чтобы он был не сильно большим то нарезать его тоже на партиции. Но нарезать по другим правилам, нежели нарезали саму таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 13:25:30 |
|
||
|
Партиционирование индекса по нескольким колонкам
|
|||
|---|---|---|---|
|
#18+
gVitalik, не смог добавить в прошлое сообщение, поэтому напишу отдельно. Просто для каждого индекса я в принципе могу сказать в какой период времени, какая его часть активно используется, поэтому редко используемые части, я хотел бы вынести в отдельную партицию/ии для этого глобального индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 13:34:36 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1887853]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
190ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 500ms |

| 0 / 0 |
