このドキュメントでは、テーブルのデータを指定されたパーティションから取得する方法について説明します。
説明
OceanBaseデータベースは、SQL文のクエリ条件に基づくパーティションの絞り込みに加えて、ユーザーが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