基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
指定分区查询数据
更新时间:2024-08-12 17:37:23
本文档主要介绍指定分区查询表的数据。
描述
除了根据 SQL 语句的查询条件进行分区裁剪以外,OceanBase 数据库也支持用户通过 SQL 语句指定需要访问的分区。
如果 SQL 语句中指定了分区,系统会将查询的范围限定在所指定的分区集合内,同时根据 SQL 语句的查询条件进行分区裁剪。最终访问的分区为指定分区和分区裁剪二者的交集。
语法
SELECT select_expr_list FROM table_name PARTITION (partition_name_list) [WHERE where_list];
示例
创建模板化 Range + Range 分区表 tbl_m_rr 并插入数据。
obclient> CREATE TABLE tbl_m_rr(col1 INT,col2 INT)
PARTITION BY RANGE(col1)
SUBPARTITION BY RANGE(col2)
SUBPARTITION TEMPLATE
(SUBPARTITION mp0 VALUES LESS THAN(1000),
SUBPARTITION mp1 VALUES LESS THAN(2000),
SUBPARTITION mp2 VALUES LESS THAN(3000)
)
(PARTITION p0 VALUES LESS THAN(100),
PARTITION p1 VALUES LESS THAN(200),
PARTITION p2 VALUES LESS THAN(300)
);
Query OK, 0 rows affected
obclient> INSERT INTO tbl_m_rr VALUES(10,500),(20,1500),(50,1100),(120,1500),(150,1800),(150,2800);
Query OK, 6 rows affected
Records: 6 Duplicates: 0 Warnings: 0
查询表
tbl_m_rr全部数据。obclient> SELECT * FROM tbl_m_rr; +------+------+ | COL1 | COL2 | +------+------+ | 10 | 500 | | 20 | 1500 | | 50 | 1100 | | 120 | 1500 | | 150 | 1800 | | 150 | 2800 | +------+------+ 6 rows in set查询表
tbl_m_rr一级分区p0的数据。obclient> SELECT * FROM tbl_m_rr PARTITION(p0); +------+------+ | COL1 | COL2 | +------+------+ | 10 | 500 | | 20 | 1500 | | 50 | 1100 | +------+------+ 3 rows in set查询表
tbl_m_rr一级分区p0和二级分区p1smp1的数据。obclient> SELECT * FROM tbl_m_rr PARTITION (p0,p1smp1); +------+------+ | COL1 | COL2 | +------+------+ | 10 | 500 | | 20 | 1500 | | 50 | 1100 | | 120 | 1500 | | 150 | 1800 | +------+------+ 5 rows in set