Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Уникальное значение для огромной таблицы 
:(
    Опции темы
TaNK
Дата 8.11.2013, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Добрый день!
Имеется огроманная таблица ~ 2млрд.строк. Она секционированна по месяцам, появилась необходимость создать уникальное поле. Есть ли возможность повесить уникальное значение на последнии портиции , так как предыдущие уникальные значения не нужны. Или подскажите в какой стороне поискать решения.
Спасибо.


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Zloxa
Дата 8.11.2013, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата

A local index can be created UNIQUE if the partitioning columns form a subset of the index columns. This restriction guarantees that rows with identical index keys always map into the same partition, where uniqueness violations can be detected.

http://docs.oracle.com/cd/E11882_01/server....htm#VLDBG00403


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Zloxa
Дата 8.11.2013, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



TaNK, я долго медетировал над твоим постом и так и не понял чего же ты хочешь в конце концов добиться. 

1)Ты просто не хочешь строить индекс по не нужным тебе секциям? Тогда создавай локальный нонюзабельный индекс и делай его юзабельным только по тем секциям, которые тебе нужны. Если у тебя ключ секционирования содержится в ключе уникальности, то локальный индекс можно сделать и уникальным. Если же нет, тебе всяко придется строить глобальный индекс.

2)У тебя не выдержано требование униакльности в исторических данных, а ты хочешь чтобы впредь оно выдерживалось? Тогда просто создай неуникальный индекс (если ключ секционирования содержится в ключе записи, то, как в предыдущем примере, локальный, с юзабельностью по нужным тебе секциям) и натяни сверху ограничение уникальности без валидации.

Это сообщение отредактировал(а) Zloxa - 8.11.2013, 13:47


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
TaNK
Дата 8.11.2013, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(Zloxa @  8.11.2013,  13:44 Найти цитируемый пост)
TaNK, я долго медетировал над твоим постом и так и не понял чего же ты хочешь в конце концов добиться

покажу на примере:
             дата                 номер          статус
08.11.2013 13:59:59       1                   c 
08.11.2013 14:00:00       1                   p
08.11.2013 14:00:00       1                   o

Хотя реально с татусы идут в порядке с,о,р

При сортировки таких данных мне очень важно понимать какая запись добавилась раньше или позже. Из примера строка 2 и 3 не понятно какая строка была добавлена последней. Хотел бы сделать следующее
ID                        дата                 номер       статус
 1              08.11.2013 13:59:59       1             с
 2              08.11.2013 14:00:00       1             о
 3              08.11.2013 14:00:00       1             р 

Сортируя по дате  и по значению ID - становится понятным какая строка добавлена последняя.



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Zloxa
Дата 8.11.2013, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(TaNK @  8.11.2013,  15:33 Найти цитируемый пост)
Сортируя по дате  и по значению ID - становится понятным какая строка добавлена последняя.

Во первых - как бы далеко не факт что id присваивается именно в порядке добавления. Но то не суть, надеюсь у вас действитлеьно есть основания так полгать. Более важно во вторых, и в главных,  - из вашего объяснения совершенно не понятно при чем здесь индексы и секции smile

Добавлено @ 14:46
понял
Возможно вы хотите добавить это поле ID, которого у вас вобще нет.
Вобще не вижу тут проблем - добавляйте(только не называйте его ID). Вам ведь не обязательно генерить его для всех двух миллиардов. Единственно, обратите внимание на предложение order сиквенса, и помните, что обеспечение упорядоченности требует сериализации доступа к выборке значений сиквенса, что может очень серьезно просадить конкурентную вставку (по меньшей мере на РАКе)

Это сообщение отредактировал(а) Zloxa - 8.11.2013, 14:52


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
TaNK
Дата 8.11.2013, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(Zloxa @  8.11.2013,  14:38 Найти цитируемый пост)
Но то не суть, надеюсь у вас действитлеьно есть основания так полгать

Основания конечно же есть.
Цитата(Zloxa @  8.11.2013,  14:38 Найти цитируемый пост)
з вашего объяснения совершенно не понятно при чем здесь индексы и секции

Про секции я указал - так как думал поможет делу, про индексы Вы сами обмолвились словом.



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.1242 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.