MySQL分区以后为什么还是一张表?
时间: 2023-05-28 07:04:55 浏览: 134
MySQL分区是将一张表按照指定的规则划分成多个分区,每个分区的数据可以单独管理。虽然分区后看起来像是多张表,但实际上还是一张表。分区技术不会改变表的结构和定义,只是在底层实现了数据的分散存储和查询优化。因此,用户在使用时仍然可以像操作常规表一样进行操作。
相关问题
mysql 分区表
MySQL 分区表是将一张大表分成多个小表存储的一种技术。这样做可以提高查询效率,减少磁盘 I/O 等问题。
MySQL 支持以下几种分区方式:
1. RANGE 分区:按照指定的列范围将数据行分配到不同的分区中,例如按照时间范围分区。
2. LIST 分区:按照指定的列值列表将数据行分配到不同的分区中,例如按照地区分区。
3. HASH 分区:根据用户指定的表达式计算出每行数据的哈希值,将数据行分配到不同的分区中。
4. KEY 分区:类似于 HASH 分区,但是只支持对单个列进行哈希计算。
下面是一个 RANGE 分区的示例:
```
CREATE TABLE mytable (
id INT NOT NULL,
created_time DATETIME NOT NULL,
data VARCHAR(200),
PRIMARY KEY (id, created_time)
) ENGINE=InnoDB
PARTITION BY RANGE( YEAR(created_time) ) (
PARTITION p0 VALUES LESS THAN (2010),
PARTITION p1 VALUES LESS THAN (2015),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
```
以上语句创建了一个名为 mytable 的分区表,按照 created_time 列的年份进行分区,分成三个分区,分别是 2010 年之前、2010 年到 2014 年和 2015 年之后。
mysql模式建一张oceanBase表,一级分区为系统号sys1和sys2,二级分区为20080101至今的所有日期
好的,以下是创建oceanBase表的SQL语句:
```sql
CREATE TABLE oceanBase (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
sys VARCHAR(10),
date DATE
) PARTITION BY RANGE COLUMNS(sys, date)(
PARTITION p0 VALUES LESS THAN ('sys1', '2008-01-01'),
PARTITION p1 VALUES LESS THAN ('sys1', MAXVALUE),
PARTITION p2 VALUES LESS THAN ('sys2', '2008-01-01'),
PARTITION p3 VALUES LESS THAN ('sys2', MAXVALUE)
);
```
这个表使用了两个列作为分区键,第一个是sys,第二个是date。使用RANGE COLUMNS表示按照列值范围进行分区。一级分区根据sys的值,分为sys1和sys2两个分区。二级分区根据date的值,分为2008年1月1日之前和之后的两个分区。这样就可以将数据按照系统号和日期进行分区存储了。
阅读全文