对于MySQL 5.5,您可以使用多列与RANGE分区。
从你的问题,它不是完全清楚你想要多少分区;听起来好像你想要一大堆分区,但我不相信这就是你真正想要的。
RANGE分区的语法位于MySQL参考手册中,可在线获取。
这里:http://dev.mysql.com/doc/refman/5.5/en/partitioning.html
(请确保您检查手册的MySQL版本,你实际运行的;还有的是在5.0到分区一些显著的变化,5.1,5.5,等
用MySQL, 5.5.X,如果你想为USER_ID的第一个字符,以及一系列gps_time值的独立的分区,你可以做这样的事情:
PARTITION BY RANGE COLUMNS(userid, gps_time)
(PARTITION pA0 VALUES LESS THAN ('B','2014-07-01')
, PARTITION pA1 VALUES LESS THAN ('B','2014-08-01')
, PARTITION pA2 VALUES LESS THAN ('B','2014-09-01')
, PARTITION pA3 VALUES LESS THAN ('B',MAXVALUE)
, PARTITION pB0 VALUES LESS THAN ('C','2014-07-01')
, PARTITION pB1 VALUES LESS THAN ('C','2014-08-01')
, PARTITION pB2 VALUES LESS THAN ('C','2014-09-01')
, PARTITION pB3 VALUES LESS THAN ('C',MAXVALUE)
, ...
, PARTITION pMX VALUES LESS THAN (MAXVALUE,MAXVALUE),
但是,这会是超过100分区,我可以”。不要想象一个场景那就是你真正想要的。 (我不知道在分区的上限为表是什么。)
随着MySQL 5.1中,我不相信这是可能对多列分区。你可以,只需在user_id列上进行分区,然后在gps_time列中创建子分区(在每个分区内)......但我从来没有这样做过。