このページは機械翻訳したものです。
このセクションでは特に、パーティショニング式で使用される関数に関連する、MySQL パーティショニングの制限について説明します。
パーティション化式で使用できるのは、次のリストに示す MySQL 関数のみです:
ABS()CEILING()(CEILING() および FLOOR()を参照してください)DATEDIFF()DAY()DAYOFMONTH()DAYOFWEEK()DAYOFYEAR()EXTRACT()(WEEK 指定子付きの EXTRACT() 関数を参照してください)FLOOR()(CEILING() および FLOOR()を参照してください)HOUR()MICROSECOND()MINUTE()MOD()MONTH()QUARTER()SECOND()TIME_TO_SEC()TO_DAYS()TO_SECONDS()UNIX_TIMESTAMP()(TIMESTAMPカラムを含む)WEEKDAY()YEAR()YEARWEEK()
MySQL 8.0 では、TO_DAYS(), TO_SECONDS(), YEAR() および UNIX_TIMESTAMP() 関数でパーティションプルーニングがサポートされています。 詳細は、セクション24.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 システム変数の値に依存します。 このため、ユニットを WEEK として指定した場合、EXTRACT() はパーティション化関数として許可されません。 (Bug #54483)
これらの関数の戻り型についての詳細は、セクション12.6.2「数学関数」およびセクション11.1「数値データ型」を参照してください。