分区
分区就是把一张表分割成几份,当查找一条数据的时候,不需要全表查找,只需要知道在那一块,然后在那一块查找
MySQL5.1以后支持横向分区
分区分为横向分区、纵向分区
横向分区的几种方式
1、range分区(常用)
常用场景:
- 假如需要删除10岁之前的雇员时,只需要删除指定分区
- 假如需要统计10岁之前的雇员人数时,只需要扫描指定分区即可
将数据划分成不同范围,例如将年龄分成若干个分区
CREATE TABLE t1(id INT,NAME VARCHAR(20),age INT)
PARTITION BY RANGE(age)
(
PARTITION p01 VALUES LESS THAN (10), ##小于10岁
PARTITION p02 VALUES LESS THAN (20), ##小于20岁
PARTITION p03 VALUES LESS THAN maxvalue ##大于等于20
);
2、list分区(常用)
将数据不规则分区,例如将根据商品分类划分分区
CREATE TABLE t2(c_id INT,NAME VARCHAR(20))
PARTITION BY LIST(c_id)
(
PARTITION p01 VALUES IN(1,3,5),##id为1、3、5分为一个区
PARTITION p02 VALUES IN(2,4,6) ##id为2、4、6分为一个区
);
3、hash分区
将一个或多个列值进行hash计算,根据对应的数据区域进行分区
CREATE TABLE t3(id INT,NAME VARCHAR(20))
PARTITION BY HASH(id) ##根据id进行分区
PARTITIONS 4; ##4个分区
4、key分区
CREATE TABLE t4(id INT,NAME VARCHAR(20))
PARTITION BY KEY(id)