Partisi HASH-RANGE membagi data tabel menjadi partisi hash, yang masing-masing selanjutnya dibagi lagi menjadi subpartisi range. Strategi ini digunakan ketika Anda perlu mendistribusikan baris secara merata di seluruh partisi melalui penghashan, sekaligus tetap dapat melakukan pemangkasan berdasarkan kondisi range pada kolom kedua.
Sintaks
CREATE TABLE [schema.]table_name
table_definition
PARTITION BY [LINEAR] HASH(expr)
SUBPARTITION BY RANGE (expr)
(partition_definition [, partition_definition] ...)partition_definition:
PARTITION partition_name
(subpartition_definition [, subpartition_definition] ...)subpartition_definition:
SUBPARTITION subpartition_name
VALUES LESS THAN {value | MAXVALUE}Parameter
| Parameter | Deskripsi |
|---|---|
table_name | Nama tabel. |
expr | Ekspresi partisi. Harus bertipe INT. Tipe string tidak didukung. |
value | Nilai batas partisi. |
MAXVALUE | Nilai maksimum partisi. |
partition_name | Nama partisi. Harus unik dalam tabel. |
subpartition_name | Nama subpartisi. Harus unik dalam tabel. |
Catatan penggunaan
Nilai
partition_nameharus unik dalam tabel.Nilai
subpartition_nameharus unik dalam tabel.
Contoh
Pernyataan berikut membuat tabel sales_hash_range dengan tiga partisi hash (p0, p1, p2), masing-masing berisi empat subpartisi range berdasarkan nilai part_no:
CREATE TABLE sales_hash_range
(
dept_no INT,
part_no INT,
country VARCHAR(20),
date DATE,
amount INT
)
PARTITION BY HASH(dept_no)
SUBPARTITION BY RANGE(part_no)
(
PARTITION p0 (
SUBPARTITION s0 VALUES LESS THAN (4),
SUBPARTITION s1 VALUES LESS THAN (7),
SUBPARTITION s2 VALUES LESS THAN (10),
SUBPARTITION s3 VALUES LESS THAN (13)
),
PARTITION p1 (
SUBPARTITION s4 VALUES LESS THAN (4),
SUBPARTITION s5 VALUES LESS THAN (7),
SUBPARTITION s6 VALUES LESS THAN (10),
SUBPARTITION s7 VALUES LESS THAN (13)
),
PARTITION p2 (
SUBPARTITION s8 VALUES LESS THAN (4),
SUBPARTITION s9 VALUES LESS THAN (7),
SUBPARTITION s10 VALUES LESS THAN (10),
SUBPARTITION s11 VALUES LESS THAN (13)
)
);dept_no menentukan partisi hash (p0–p2) tempat suatu baris ditempatkan. Di dalam setiap partisi, part_no menentukan subpartisi: nilai kurang dari 4 masuk ke subpartisi pertama, nilai kurang dari 7 ke subpartisi kedua, dan seterusnya.