# 分区表类型

URL: https://caijiao.org/mariadb/advanced/partition/types
Source: docs/mariadb/advanced/partition/types.md
Description: 本节介绍 MariaDB 中的分区表类型及其使用方法，帮助用户通过分区技术提升大数据量表的查询性能和管理效率。

## 1. 什么是分区表

分区表是将大表的数据按某种规则划分成多个更小、更易管理的部分（分区），每个分区独立存储，查询时只访问相关分区，提高性能。

## 2. 常见分区类型

- **RANGE 分区**  
  根据列值范围划分，如按日期范围分区。

- **LIST 分区**  
  根据列值列表划分，适合少量离散值。

- **HASH 分区**  
  根据列的哈希值分区，实现数据均匀分布。

- **KEY 分区**  
  类似 HASH，但使用 MariaDB 内置函数生成分区。

## 3. 创建分区表示例

### RANGE 分区示例

```sql
CREATE TABLE orders (
  id INT,
  order_date DATE
)
PARTITION BY RANGE (YEAR(order_date)) (
  PARTITION p2019 VALUES LESS THAN (2020),
  PARTITION p2020 VALUES LESS THAN (2021),
  PARTITION pmax VALUES LESS THAN MAXVALUE
);
````

### LIST 分区示例

```sql
CREATE TABLE users (
  id INT,
  country VARCHAR(50)
)
PARTITION BY LIST COLUMNS(country) (
  PARTITION p_us VALUES IN ('USA', 'Canada'),
  PARTITION p_eu VALUES IN ('France', 'Germany'),
  PARTITION p_other VALUES IN (DEFAULT)
);
```

## 4. 注意事项

* 分区列必须是主键的一部分或有索引。
* 分区表不支持外键约束。
* 适合海量数据和按时间、地域等字段频繁查询的场景。

---

分区表类型让 MariaDB 能够更有效地管理和查询大规模数据，提升数据库性能和维护便捷性。
