mysql 如何根据字段值如:类别ID,来动态分区
CREATE TABLE `data_log` (
`uniqueid` varchar(20) NOT NULL, `cam_id` varchar(8) default NULL, `call_date` datetime default NULL, `status` varchar(6) default NULL, PRIMARY KEY (`uniqueid`), KEY `call_date` (`call_date`), KEY `cam_id` (`cam_id`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; insert into data_log values('100001','cam1','2012-11-14 08:19:40','A'),('100002','cam1','2012-11-14 08:19:40','B'),('100003','cam1','2012-11-15 08:19:40','C') ,('100004','cam1','2012-11-15 08:19:40','D'),('100005','cam2','2012-11-14 08:19:40','A'),('100006','cam2','2012-11-14 08:19:40','A') ,('100007','cam2','2012-11-15 08:19:40','B'),('100008','cam2','2012-11-15 08:19:40','C'),('100009','cam1','2012-11-14 08:19:40','A'), ('100010','cam1','2012-11-15 08:19:40','B'),('100011','cam2','2012-11-15 08:19:40','A'),('100012','cam2','2012-11-14 08:19:40','C'), ('100013','cam1','2012-11-15 08:19:40','A'),('100014','cam2','2012-11-15 08:19:40','D'),('100015','cam1','2012-11-14 08:19:40','D'), ('100016','cam3','2012-11-14 08:19:40','A'),('100017','cam3','2012-11-14 08:19:40','D'),('100018','cam3','2012-11-15 08:19:40','D'), ('100019','cam3','2012-11-15 08:19:40','C'),('100020','cam3','2012-11-14 08:19:40','A'),('100021','cam2','2012-11-14 08:19:40','B'), ('100022','cam3','2012-11-15 08:19:40','B'),('100023','cam1','2012-11-14 08:19:40','C'),('100024','cam4','2012-11-14 08:19:40','A'), ('100025','cam4','2012-11-15 08:19:40','B'),('100026','cam4','2012-11-15 08:19:40','B'),('100027','cam4','2012-11-15 08:19:40','C')
能实现按status值来动态分区,而不是建表时候指定,以为这个status值是动态变化的。 能实现按 status、call_date 分月组合那更好不过了! PARTITION BY HASH(status) 该当用 HASH分区即可。但关键是你的查询以什么为准。 分区仅对某种特定查询有效。