0

Мне нужно, чтобы вы предложили создать раздел на столе с миллионами записей.Разделение на таблицу с миллионом записей

определения таблиц

  1. CompanyID
  2. Type_Of_Data
  3. emp_id
  4. назначения
  5. Destination_id

Теперь здесь для одной компании, тип данных и emp_id могут быть разными

COMPANY_ID TYPE_OF_DATA EMP_ID 

A EMP_DATA   A1 
A EMP_DATA   A2 
A EMP_DATA   A3 
A EMP_DATA   A4 
A EMP_ADDRESS_DATA A1 
A EMP_ADDRESS_DATA A2 
A EMP_ADDRESS_DATA A3 
A EMP_ADDRESS_DATA A4 
B EMP_DATA   B1 
B EMP_DATA   B2 
B EMP_DATA   B3 
B EMP_DATA   B4 
B EMP_ADDRESS_DATA B1 
B EMP_ADDRESS_DATA B2 
B EMP_ADDRESS_DATA B3 
B EMP_ADDRESS_DATA B4 

Мой основной отбор будет на company_id, а затем тип данных и emp_id

Я думал о создании списка - Hash или Список -list раздел.

Можно ли предложить что-то еще и как добавить раздел в существующую таблицу будет полезно

ответ

1

Вы не можете добавить любой раздел в существующую «не-partitionized» стол. Вы должны создать новую таблицу и скопировать свои данные в нее. Посмотрите на DBMS_REDEFINITION, который поможет вам сделать это без простоя вашего приложения.

Раздел композита List-Список будет этим:

CREATE TABLE MY_TABLE 
(
COMPANY_ID VARCHAR2(100), 
TYPE_OF_DATA VARCHAR2(100), 
EMP_ID VARCHAR2(10), 
... 
) 
PARTITION BY LIST (COMPANY_ID) 
    SUBPARTITION BY LIST (TYPE_OF_DATA) SUBPARTITION TEMPLATE 
     (
     SUBPARTITION EMP VALUES ('EMP_DATA'), 
     SUBPARTITION EMP_ADDRESS VALUES ('EMP_ADDRESS_DATA'), 
     SUBPARTITION MISCELLANEOUS VALUES (DEFAULT) -- if needed 
     ) 
(
PARTITION COMPANY_A VALUES ('A'), 
PARTITION COMPANY_B VALUES ('B'), 
PARTITION COMPANY_C VALUES ('C'), 
PARTITION COMPANY_OTHER VALUES (DEFAULT) 
); 

В случае, если вы можете получить дополнительные компании в вашей таблице рассмотрит RANGE раздел вместо этого.

+0

Спасибо за Ответ. Не могли бы вы рассказать мне, как добавить новый раздел и дополнительный раздел в эту таблицу? –

+0

Просто добавьте раздел 'ALTER TABLE MY_TABLE ADD PARTITION COMPANY_D_TO_G VALUES ('D', 'E', 'F', 'G');'. Подразделы создаются автоматически, как определено шаблоном. –

+0

: Я имею в виду, что если другое подразделение появляется, как EMP_SPOUSE, то я не хочу, чтобы он попадал под деление по умолчанию, тогда как я могу добавить это, я спрашиваю, потому что мне нужно сделать это динамическое –

0

Вы не можете напрямую разбить существующую таблицу без разбиения на разделы.Вам нужно будет создать промежуточный стол/новая таблица в зависимости от следующих способов раздела:

  • DBMS_REDEFINITION

    1. Создать PARTITIONED Временную таблицу
    2. Запустите переопределение Process
    3. Создание ограничений и индексов (зависимостей)
    4. Завершите процесс переопределения
  • EXCHANGE PARTITION

    1. Создание многораздельной таблицы адресатов
    2. ОБМЕН PARTITION
    3. SPLIT PARTITION (Если требуется разделить один большой раздел на более мелкие разделы)