重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2784|回复: 1
打印 上一主题 下一主题

[原创]mysql分区表的一些概念和操作

[复制链接]
跳转到指定楼层
楼主
发表于 2014-11-7 17:19:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 分区表顾名思义。把数据分区并且查看。目的是为了更快的检索数据。
创建分区表 有几种分区可以选择。
范围分区:range
create table orders_range(
id int auto_increment primary key,
customer_surname varchar(30),
store_id int ,salesperson_id int,
order_date date ,note varchar(500)
) engine = innodb
partition by range(id) (
partition p0 values less than (10000),
partition p1 values less than (20000),
partition p2 values less than (30000),
partition p3 values less than (40000),
partition p4 values less than (50000)
);

列表分区:
 create table  orders_list(
 id int auto_increment,customer_surname varchar(30),store_id int,
 salesperson_id int ,
 order_date date ,
 note varchar(500),
 index idx(id)) engine = innodb
 partition by list (store_id) (
 partition p0 values in (1,3,4,17),
 partition p1 values in (2,12,14),partition p2 values in (6,8,20),
 partition p3 values in (5,7,9,11,16),
 partition p4 values in (10, 13,15,18)
 );
哈希值分区:
create table orders_hash (
id int auto_increment primary key , customer_surname varchar(30),
store_id int, salesperson_id int ,order_date date,
note varchar(500)) engine =innodb
partition by hash(id) partitions 4;
key 分区:
create table orders_key(
id int auto_increment,customer_surname varchar(30),store_id int,
salesperson_id int ,order_date date, note varchar(500),
index idx (id) ) engine=innodb
partition by key (order_date) partitions 4;

分区的操作:

增加分区:

可以转换分区。
exchange 把 一分区的数据传输到一张没有分区的表上。

删除分区。
注意:不能删除哈希值。key值的分区表。
语法:
alter table orders_list drop partition p2
删除分区 则会删除数据。慎用。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

沙发
发表于 2014-11-28 10:25:25 | 只看该作者
这个概念和 oracle分区表类似,mysql缺少组合分区吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-5-6 18:31 , Processed in 0.168097 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表