查询水平分区¶
查询分区可以根据一级子分区表名或二级子分区表名进行查询,也通过给定条件对分区表进行查询,如语法中的partition_key_value,subpartition_key_value。注意partition_key_value的个数必须等于一级子分区键个数,subpartition_key_value定义的value的个数,必须等于一级子分区键的个数与二级子分区键的个数总和。
查询分区表举例
示例1:查询一级分区表¶
-- 清理环境
DROP TABLE tab;
-- 创建分区表
CREATE TABLE tab
(
id NUMERIC(6),
time_id DATE,
status VARCHAR(2)
)
PARTITION BY RANGE (time_id)
SUBPARTITION BY LIST (status)
(
PARTITION p1 VALUES LESS THAN ('2006-APR-01')
(
SUBPARTITION p1_a VALUES ('A1', 'A2'),
SUBPARTITION p1_b VALUES ('B1', 'B2', 'B3')
),
PARTITION p2 VALUES LESS THAN ('2006-JUL-01')
(
SUBPARTITION p2_a VALUES ('A1', 'A2'),
SUBPARTITION p2_b VALUES ('B1', 'B2', 'B3')
)
);
--查询一级分区表
DROP TABLE tab;
CREATE TABLE tab
(
c1 INT,
c2 INT
)
PARTITION BY HASH(c1)
(
PARTITION p1,
PARTITION p2
);
SELECT * FROM tab;
C1(int) |C2(int) |
总数目:0
SELECT * FROM tab PARTITION(p1);
C1(int) |C2(int) |
总数目:0
SELECT * FROM tab PARTITION FOR(5);
C1(int) |C2(int) |
总数目:0
示例2:查询二级分区表¶
-- 清理环境
DROP TABLE tab;
-- 创建分区表
CREATE TABLE tab
(
id INT,
status VARCHAR(2)
)
PARTITION BY RANGE (id)
SUBPARTITION BY LIST (status)
(
PARTITION p1 VALUES LESS THAN (10)
(
SUBPARTITION p1_a VALUES ('A1', 'A2'),
SUBPARTITION p1_b VALUES ('B1', 'B2', 'B3')
),
PARTITION p2 VALUES LESS THAN (20)
(
SUBPARTITION p2_a VALUES ('A1', 'A2'),
SUBPARTITION p2_b VALUES ('B1', 'B2', 'B3')
)
);
--查询二级分区表
SELECT * FROM tab;
ID(int) |STATUS(varchar) |
总数目:0
SELECT * FROM tab PARTITION(p1);
ID(int) |STATUS(varchar) |
总数目:0
SELECT * FROM tab SUBPARTITION(p1_a);
ID(int) |STATUS(varchar) |
总数目:0
SELECT * FROM tab SUBPARTITION FOR(10,'A1');
ID(int) |STATUS(varchar) |
总数目:0