我如下语句对数据表进行hash分区,ALTER TABLE tbl PARTITION BY HASH(ID) PARTITIONS 197;
但由于数据分布不均匀,导致某些分区(举个例子p76)过大,所以希望单独对该过大的分区进一步按日期字段date进行range分区,
如 PARTITION BY RANGE(MONTH(date))
是否可行?

解决方案 »

  1.   

    在MySQL 5.1中,对于已经通过RANGE或LIST分区了的表再进行子分区是可能的。子分区既可以使用HASH希分区,也可以使用KEY分区。这也被称为复合分区(composite partitioning)。
      

  2.   


    反过来不行吗? 先进行hash分区,子分区能再进行range分区吗?
      

  3.   

    要是你明白hash分区是怎么回事,就不会觉得hash分区下还能子分区了