Spec-Zone .ru
спецификации, руководства, описания, API
|
MySQL 5.7 оказывает поддержку для LIST COLUMNS
разделение. Это - разновидность
LIST
разделение, которое позволяет использованию многократных столбцов как ключи
раздела, и для столбцов типов данных кроме целочисленных типов использоваться в качестве разделения столбцов;
можно использовать строковые типы, DATE
, и DATETIME
столбцы. (Для получения дополнительной информации о разрешенных
типах данных для COLUMNS
разделение столбцов, см. Раздел
17.2.3,"COLUMNS
Разделение".)
Предположите, что у Вас есть бизнес, у которого есть клиенты в 12 городах, которые, для продаж и маркетинговых целей, Вы организуете в 4 области 3 городов каждого как показано в следующей таблице:
Область | Города |
---|---|
1 | Оскаршамн, Högsby, Mönsterås |
2 | Виммерби, Hultsfred, Västervik |
3 | Nässjö, Eksjö, Ветланда |
4 | Uppvidinge, Алвеста, Växjo |
С LIST COLUMNS
разделение, можно составить таблицу для данных о клиентах, которая
присваивает строку любому из 4 разделов, соответствующих этим областям, основанным на имени города, где клиент
находится, как показано здесь:
CREATE TABLE customers_1 ( first_name VARCHAR(25), last_name VARCHAR(25), street_1 VARCHAR(30), street_2 VARCHAR(30), city VARCHAR(15), renewal DATE)PARTITION BY LIST COLUMNS(city) ( PARTITION pRegion_1 VALUES IN('Oskarshamn', 'Högsby', 'Mönsterås'), PARTITION pRegion_2 VALUES IN('Vimmerby', 'Hultsfred', 'Västervik'), PARTITION pRegion_3 VALUES IN('Nässjö', 'Eksjö', 'Vetlanda'), PARTITION pRegion_4 VALUES IN('Uppvidinge', 'Alvesta', 'Växjo'));
Как с разделением RANGE COLUMNS
, Вы не должны использовать выражения в COLUMNS()
пункт, чтобы преобразовать значения столбцов в целые числа. (Фактически, с
использованием выражений кроме имен столбцов не разрешают COLUMNS()
.)
Также возможно использовать DATE
и DATETIME
столбцы, как показано в следующем примере, который использует то же
самое имя и столбцы как customers_1
таблица, показанная ранее, но, использует LIST COLUMNS
разделение основанного на renewal
столбец, чтобы сохранить строки в одном из 4 разделов в зависимости от недели в феврале 2010 учетная запись
клиента, как планируют, возобновит:
CREATE TABLE customers_2 ( first_name VARCHAR(25), last_name VARCHAR(25), street_1 VARCHAR(30), street_2 VARCHAR(30), city VARCHAR(15), renewal DATE)PARTITION BY LIST COLUMNS(renewal) ( PARTITION pWeek_1 VALUES IN('2010-02-01', '2010-02-02', '2010-02-03', '2010-02-04', '2010-02-05', '2010-02-06', '2010-02-07'), PARTITION pWeek_2 VALUES IN('2010-02-08', '2010-02-09', '2010-02-10', '2010-02-11', '2010-02-12', '2010-02-13', '2010-02-14'), PARTITION pWeek_3 VALUES IN('2010-02-15', '2010-02-16', '2010-02-17', '2010-02-18', '2010-02-19', '2010-02-20', '2010-02-21'), PARTITION pWeek_4 VALUES IN('2010-02-22', '2010-02-23', '2010-02-24', '2010-02-25', '2010-02-26', '2010-02-27', '2010-02-28'));
Это работает, но становится громоздким, чтобы определить и поддержать, если число включенных дат становится
очень большим; в таких случаях это обычно более практично, чтобы использовать RANGE
или RANGE COLUMNS
разделение вместо этого. В этом случае начиная со столбца мы
хотим использовать, поскольку ключ разделения является a DATE
столбец, мы используем RANGE COLUMNS
разделение, как показано здесь:
CREATE TABLE customers_3 ( first_name VARCHAR(25), last_name VARCHAR(25), street_1 VARCHAR(30), street_2 VARCHAR(30), city VARCHAR(15), renewal DATE)PARTITION BY RANGE COLUMNS(renewal) ( PARTITION pWeek_1 VALUES LESS THAN('2010-02-09'), PARTITION pWeek_2 VALUES LESS THAN('2010-02-15'), PARTITION pWeek_3 VALUES LESS THAN('2010-02-22'), PARTITION pWeek_4 VALUES LESS THAN('2010-03-01'));
См. Раздел 17.2.3.1,"RANGE
COLUMNS
разделение", для получения дополнительной информации.
Кроме того (как с RANGE COLUMNS
деля), можно использовать многократные столбцы в
COLUMNS()
пункт.
См. Раздел 13.1.14,"CREATE TABLE
Синтаксис", для дополнительной информации о PARTITION BY LIST COLUMNS()
синтаксис.