2012-10-27 5 views
3

MySQL을 사용하여 목록을 파티션 할 때 나머지 항목에 대한 파티션을 생성하려면 어떻게해야합니까?나머지 항목에 대한 파티션 파티션

예컨대 : 오라클에서

CREATE TABLE tbl 
(
ID integer 
) 
PARTITION BY LIST (ID) 
( 
    PARTITION P1 values in (1), 
    PARTITION P2 values in (2), 
    PARTITION P3 values in (3), 
    PARTITION Pother values in (<all remaining values of ID>) 
); 

, 나는 values in (default)를 사용하지만 MySQL의에서 작업을 수행합니다.

답변

2

range partitioning과 달리 list partitioning에는 "catch-all"이 없습니다. 문서 인용 :

RANGE 파티셔닝의 경우와 달리 MAXVALUE와 같은 과 같은 "catch-all"은 없습니다. 파티션 표현식 의 모든 예상 값은 PARTITION ... VALUES IN (...) 절에서 설명해야합니다. 타의 추종을 불허하는 분할 열 값을 포함하는 INSERT 문은

불행하게도, 저는 믿습니다, 당신도 목록과 범위 파티션을 결합 할 수없는 ... 오류와 함께 실패합니다. 이 특정 인스턴스에서 목록 분할 영역을 사용하려는 이유는 전적으로 확실하지 않습니다. range 파티션이 잘 작동하지 않을까요?

CREATE TABLE tbl 
(
ID integer 
) 
PARTITION BY RANGE (ID) 
( 
    PARTITION P1 values less than (2), 
    PARTITION P2 values less than (3), 
    PARTITION P3 values less than (4), 
    PARTITION Pother values less than maxvalue 
); 

나는 이것이 단지 하나의 예라고 가정한다. 기본 키에서 각 키를 분할하는 것은 약간의 의미가 없습니다.

+0

다음은 SQL Fiddle입니다. http://sqlfiddle.com/#!9/8b60e/2 –

+0

고맙습니다 @LenielMacaferi, SQL Fiddle이 현재 잠시 깨진 것처럼 보입니다. – Ben

+0

MySQL 버전이 변경되었습니다. SQL Fiddle에서. 그것이 지금 작동하는지보십시오 ... :) 그것이 작동하고 있습니다. –