mysql 分区表
2015-07-23 10:20
776 查看
mysql 提供分区表的功能,可以将大表进行分拆,分拆后可以极大的提升查询能力。
备注:分区表的分区也可以部署到不同的物理磁盘。
下面是一个典型的RANGE分区例子:
1、创建数据库如下:
2、插入数据:
3、查询数据:
SELECT * FROM t_demo_test4 WHERE day < '2015-5-30';
通过explain查看:
![](http://images0.cnblogs.com/blog2015/491765/201507/231017495219648.png)
可以看到此时,rows = 4,改搜索并未遍历全部数据。
//-------------------------------------------------------------------------------------------------------------------------------
MYSQL还提供LIST、HASH、KEY三种分区方式,如下:
备注:分区表的分区也可以部署到不同的物理磁盘。
下面是一个典型的RANGE分区例子:
1、创建数据库如下:
DROP TABLE IF EXISTS t_demo_test4; CREATE TABLE t_demo_test4( tid int(20) NOT NULL AUTO_INCREMENT, day datetime NOT NULL, title varchar(50), content varchar(200), PRIMARY KEY(tid, day) )PARTITION BY RANGE COLUMNS (day)( PARTITION P_3 VALUES LESS THAN ('2015-03-01'), PARTITION P_6 VALUES LESS THAN ('2015-06-01'), PARTITION P_9 VALUES LESS THAN ('2015-09-01'), PARTITION P_12 VALUES LESS THAN ('2015-12-31') );
2、插入数据:
insert into t_demo_test4(day, title, content) values('2015-04-05 22:10:30','title1','content sinny write test') ,('2015-05-05 22:10:30','title1','一种内容1') ,('2015-06-06 22:10:30','title1','一种内容2') ,('2015-07-07 22:10:30','title1','一种内容3') ,('2015-08-08 22:10:30','title1','一种内容4');
3、查询数据:
SELECT * FROM t_demo_test4 WHERE day < '2015-5-30';
通过explain查看:
![](http://images0.cnblogs.com/blog2015/491765/201507/231017495219648.png)
可以看到此时,rows = 4,改搜索并未遍历全部数据。
//-------------------------------------------------------------------------------------------------------------------------------
MYSQL还提供LIST、HASH、KEY三种分区方式,如下:
DROP TABLE IF EXISTS t_demo_test5; CREATE TABLE t_demo_test5( tid int(20) NOT NULL AUTO_INCREMENT, day datetime NOT NULL, type varchar(50), content varchar(200), PRIMARY KEY(tid,type) )PARTITION BY LIST COLUMNS(type)( PARTITION P_1 VALUES IN ('report','note'), PARTITION P_2 VALUES IN ('default') );
DROP TABLE IF EXISTS t_demo_test5; CREATE TABLE t_demo_test5( tid int(20) NOT NULL AUTO_INCREMENT, day datetime NOT NULL, type varchar(50), content varchar(200), PRIMARY KEY(tid) )PARTITION BY LINEAR HASH(tid) PARTITIONS 4;
DROP TABLE IF EXISTS t_demo_test5; CREATE TABLE t_demo_test5( tid int(20) NOT NULL AUTO_INCREMENT, day datetime NOT NULL, type varchar(50), content varchar(200), PRIMARY KEY(tid) )PARTITION BY LINEAR KEY(tid) PARTITIONS 4;
相关文章推荐
- mysql允许所有host访问
- windows下 MySQL手动安装与卸载
- Keepalived + Mysql 双主
- Mysql:Communications link failure
- MYSQL替换字符串
- mysql主从配置
- mysql-sql常用sql语句整理
- mysql忘记root账号密码的简单解决办法
- Windows下重置MySQL密码
- 【转】MySQL日期时间函数大全
- c# 读取mysql 某个表的所有字段名称
- Mysql学习笔记之常用数据类型
- mysql基础综述(四)
- MySQL时间字段究竟使用INT还是DateTime
- mysql 配置
- mysql中为int设置长度究竟是什么意思
- 详解mysql int类型的长度值问题
- mysql中的慢查询日志
- mysql1175错误
- Mysql数据库中不能插入中文