假如我进行如下分区
BY HASH(ID) PARTITIONS 197ID字段是无符号整型,能否在分配前知道ID=50的值都落在了哪个分区中?ps:
我知道在分配了之后,可以通过explain partitions来看到,但分配前能否知道呢?

解决方案 »

  1.   

    ID=50会被放在第50分区MYSQL直接 MOD(ID,197)
      

  2.   

    当使用了“PARTITION BY HASH”时,MySQL将基于用户函数结果的模数来确定使用哪个编号的分区。换句话,对于一个表达式“expr”,将要保存记录的分区编号为N ,其中“N = MOD(expr, num)”。例如,假定表t1 定义如下,它有4个分区: CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATE)    PARTITION BY HASH( YEAR(col3) )    PARTITIONS 4;如果插入一个col3列值为'2005-09-15'的记录到表t1中,那么保存该条记录的分区确定如下: MOD(YEAR('2005-09-01'),4)=  MOD(2005,4)=  1