
# 表分区定义
分区表就是把逻辑上的一张表根据分区策略分成几张物理块进行存储，这张逻辑上的表称之为分区表，物理块称之为分区。分区表是一张逻辑表，不存储数据，数据实际是存储在分区上的。当进行条件查询时，系统只会扫描满足条件的分区，避免全表扫描，从而提升查询性能。
分区表的优势：
- 改善查询性能。对分区对象的查询可以仅搜索自己关心的分区，提高检索效率。
- 增强可用性。如果分区表的某个分区出现故障，表在其他分区的数据仍然可用。
- 提升可维护性。对于需要周期性删除的过期历史数据，可以通过drop/truncate分区的方式快速高效处理。
#### 分区策略选择
当表有以下特征时，可以考虑使用表分区策略：
- 数据具有明显枚举类型字段。 分区表需要根据有明显枚举类型字段进行表分区。例如按照日期、区域、数值等字段进行分区，时间字段是最常见的分区字段。
  
- 表数据量比较大。 小表扫描本身耗时不大，分区表的性能收益不明显，因此只建议对大表采取分区策略。
  
 
#### 分区表声明
表只能在创建时声明为分区表。 例如：
```
CREATE TABLE my_tbl (x int,b int) PARTITION BY (b int) STORE AS ORC;
INSERT INTO my_tbl VALUES (1,10);
```
#### 删除一个分区
使用ALTER TABLE语句从分区表中删除一个分区。例如，删除表my_tbl的分区。
```
ALTER TABLE my_tbl DROP PARTITIONS (b = 10);
```
#### 查询分区
- 查询分区b = 10**。**
  ```
  SELECT * FROM my_tbl  where b = 10;
  ```
  
- 查看分区表信息。
  ```
  SHOW PARTITIONS my_tbl;
  DESCRIBE my_tbl;
  ```
  
 
#### 删除分区表
使用DROP TABLE语句删除一个分区表。
```
DROP TABLE web_returns_p1;
```
