Mysql 分区表

来源:互联网 发布:两个单片机之间的通信 编辑:程序博客网 时间:2024/05/12 04:01

#显示分区表状况
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)
原创粉丝点击