19.2.3.2 LIST COLUMNS 파티셔닝
MySQL 5.6는 LIST COLUMNS
파티셔닝 지원을 제공합니다. 이것은 LIST
파티셔닝의 변형에 여러 컬럼을 파티션 키로 사용할 수 정수 이외의 데이터 형의 컬럼을 파티셔닝 컬럼으로 사용할 수 있습니다. 문자열, DATE
및 DATETIME
컬럼을 사용할 수 있습니다 ( COLUMNS
파티셔닝 컬럼에 허용되는 데이터 형식에 대한 자세한 내용은 섹션 19.2.3 "COLUMNS 파티셔닝" 를 참조하십시오).
회사의 고객이 12 도시에 존재하고 판매 및 마케팅을 위해 그들을 다음 표와 같이 3 개의 도시로 구성된 4 개의 지역으로 분류한다고 가정합니다.
Region | Cities |
---|---|
1 | Oskarshamn, Högsby, Mönsterås |
2 | Vimmerby, Hultsfred, Västervik |
3 | Nässjö, Eksjö, Vetlanda |
4 | Uppvidinge, Alvesta, 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
테이블과 동일한 이름 및 컬럼을 사용하고 있습니다 만, renewal
컬럼에 기반 LIST COLUMNS
파티셔닝을 사용하여 고객의 계정 업데이트가 예정되어있는 2010 년 2 월 주에 따라 4 개의 파티션 중 하나에 행이 포함되는 것을 보여줍니다.
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
파티셔닝을 대신 사용하는 편이 현실적입니다. 이 경우 파티셔닝 키로 사용하는 열은 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') );
자세한 내용은 섹션 19.2.3.1 "RANGE COLUMNS 파티셔닝" 를 참조하십시오.
또한 ( RANGE COLUMNS
파티셔닝과 마찬가지로) COLUMNS()
절에서 여러 컬럼을 사용할 수 있습니다.
PARTITION BY LIST COLUMNS()
구문에 대한 자세한 내용은 섹션 13.1.17 "CREATE TABLE 구문" 을 참조하십시오.