19.6.3 함수 관련 파티셔닝 제한
이 섹션에서는 특히 분할 식에 사용되는 함수 관련, MySQL 파티셔닝 제한에 대해 설명합니다.
다음 표에 표시된 MySQL 함수 만 분할 식으로 허용됩니다.
ABS() | CEILING() (see
CEILING() and FLOOR()) | DAY() |
DAYOFMONTH() | DAYOFWEEK() | DAYOFYEAR() |
DATEDIFF() | EXTRACT() (see
EXTRACT() function with WEEK specifier) | FLOOR() (see
CEILING() and FLOOR()) |
HOUR() | MICROSECOND() | MINUTE() |
MOD() | MONTH() | QUARTER() |
SECOND() | TIME_TO_SEC() | TO_DAYS() |
TO_SECONDS() | UNIX_TIMESTAMP() (permitted beginning
with MySQL 5.6.1 and fully supported beginning with
MySQL 5.6.3, with
TIMESTAMP columns) | WEEKDAY() |
YEAR() | | YEARWEEK() |
MySQL 5.6에서는 TO_DAYS()
, TO_SECONDS()
및 YEAR()
함수에서 범위 최적화를 사용할 수 있습니다. 또한 MySQL 5.6.3 이후에서는 UNIX_TIMESTAMP()
는 분할 식으로 단조로 처리됩니다. 자세한 내용은 19.4 절 "파티션 가지 치기" 를 참조하십시오.
CEILING () 및 FLOOR () 이러한 각 함수는 정확한 수치 형 ( INT
형 또는 DECIMAL
유형 중 하나 등)의 인수를 건네받은 경우에만 정수를 반환합니다. 이것은 예를 들어, 다음의 CREATE TABLE
문이 여기에 같이 오류와 함께 실패하는 것을 의미합니다.
mysql>CREATE TABLE t (c FLOAT) PARTITION BY LIST( FLOOR(c) )(
->PARTITION p0 VALUES IN (1,3,5),
->PARTITION p1 VALUES IN (2,4,6)
->);
ERROR 1490 (HY000): The PARTITION function returns the wrong type
WEEK 명시자를 가진 EXTRACT () 함수 EXTRACT()
함수에 의해 반환되는 값은 EXTRACT(WEEK FROM
로 사용되는 때 col
)default_week_format
시스템 변수의 값에 따라 달라집니다. 따라서 MySQL 5.6.2 이후에서는 EXTRACT()
는 단위를 WEEK
로 지정하면 파티션 함수로 허용하지 않습니다 (Bug # 54483).
이 함수의 반환 형식에 대한 자세한 내용은 섹션 12.6.2 "수학 함수" 및 섹션 11.2 "숫자" 를 참조하십시오.