Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  関数に関連するパーティショニング制限

19.6.3 関数に関連するパーティショニング制限

このセクションでは特に、パーティショニング式で使用される関数に関連する、MySQL パーティショニングの制限について説明します。

次の表に示されている MySQL 関数のみがパーティショニング式で許可されます。

ABS() CEILING() (CEILING() および FLOOR()を参照してください) DAY()
DAYOFMONTH() DAYOFWEEK() DAYOFYEAR()
DATEDIFF() EXTRACT() (WEEK 指定子付きの EXTRACT() 関数を参照してください) FLOOR() (CEILING() および FLOOR()を参照してください)
HOUR() MICROSECOND() MINUTE()
MOD() MONTH() QUARTER()
SECOND() TIME_TO_SEC() TO_DAYS()
TO_SECONDS() UNIX_TIMESTAMP() (TIMESTAMP カラムで、MySQL 5.6.1 から許可され、MySQL 5.6.3 から完全にサポートされています) 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「数値型」を参照してください。


User Comments
  Posted by Chris Wagner on August 19, 2011
The bit shift operators >> and << can be emulated in the partitioning function by DIV and multiplication. This is because shift is identical to multiplying or dividing by 2 on an integer. I'm using POW here just to illustrate the relationship between the functions. U can't use POW so write the actual product in the function as in my e.g.

`int` >> num --> `int` DIV POW(2, num)
`int` << num --> `int` * POW(2, num)

e.g.
`int` >> 8 is `int` DIV 256

Sign Up Login You must be logged in to post a comment.