#显示分区表状况
EXPLAIN PARTITIONS SELECT * from point_changed
#查看创建表时的结构
SHOW CREATE TABLE point_changed
#分区键必须为主键,因此如果想建立如以日期时间的分区的时候
1.联合id及分区键一起建立主键
2.RANGE 的分区方式在加分区的时候,只能从最大值后面加,而最大值前面不可以添加;
3.目前对时间分区 只支持两个函数 year() to_days()
4.时间范围判断条件中的起始时间尽量使用开始时间先判断,因为分区里是按少于某个时间划分的,例如 `insert_time`>='2012-04-24' AND `insert_time`<'2012-04-25' 应该尽量靠近where,并且要直接用时间字段进行比较
5.例如如下
//对一个不是分区表的数据库表追加分区方法:
//按周分区 (YEARWEEK(starttime))
select year(now());
select month(now());
select weekofyear(now());
select yearweek(now());
select to_days(now());
ALTER TABLE `data_running` PARTITION BY RANGE(to_days(insert_time)) (
PARTITION p0 VALUES LESS THAN (to_days('2012-04-21')),
PARTITION p1 VALUES LESS THAN (to_days('2012-04-24')),
PARTITION pmax VALUES LESS THAN MAXVALUE
);
删除分区:
ALTER TABLE point_changed DROP PARTITION p0;
添加分区:
ALTER TABLE test_load_888_20110428 ADD PARTITION (
PARTITION p0 VALUES LESS THAN (maxvalue)
)
#查看数据库是否支持
SHOW VARIABLES LIKE '%partition%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| have_partitioning | YES |
+-------------------+-------+
1 row in set (0.03 sec)