Topik ini menjelaskan cara membuat tabel yang dipartisi berdasarkan rentang.
Sintaksis
Pernyataan berikut digunakan untuk membuat satu atau lebih tabel yang dipartisi berdasarkan rentang. Data dipartisi berdasarkan batas rentang, sering kali menggunakan batas waktu. Batas partisi harus bertambah.
CREATE TABLE ... PARTITION BY RANGE {(expr) COLUMNS(column_list)}
(partition_definition [, partition_definition] ...);Definisi partisi adalah:
PARTITION partition_name
VALUES LESS THAN {(value value_list) MAXVALUE}Parameter
Parameter | Deskripsi |
expr | Ekspresi partisi. Harus bertipe INT. Tipe string tidak didukung. |
column_list | Daftar kolom kunci partisi. Ekspresi tidak didukung. |
value | Nilai batas partisi. |
value_list | Daftar nilai batas partisi. Digunakan dalam RANGE COLUMNS(). |
MAXVALUE | Nilai maksimum partisi. |
partition_name | Nama partisi. Nama harus unik di dalam tabel. |
Deskripsi
Partisi rentang mendukung kunci partisi kolom tunggal.
Partisi rentang mendukung ekspresi.
Partisi rentang mendukung tipe data ekstensi RANGE COLUMNS.
RANGE COLUMNS tidak mendukung ekspresi, tetapi mendukung kolom.
RANGE COLUMNS mendukung kunci partisi multi-kolom.
RANGE COLUMNS mendukung kunci partisi dengan tipe data berikut: INT, tipe string, DATE, dan DATETIME.
Contoh
Buat tabel yang dipartisi berdasarkan rentang:
CREATE TABLE sales_range
(
dept_no INT,
part_no INT,
country varchar(20),
date DATE,
amount INT
)
PARTITION BY RANGE(amount)
(
PARTITION p0 VALUES LESS THAN(1000),
PARTITION p1 VALUES LESS THAN(2000),
PARTITION p2 VALUES LESS THAN(3000),
PARTITION p3 VALUES LESS THAN(MAXVALUE)
);Buat tabel yang dipartisi berdasarkan kolom rentang:
CREATE TABLE sales_range_columns
(
dept_no INT,
part_no INT,
country varchar(20),
create_date DATE,
amount INT
)
PARTITION BY RANGE COLUMNS(create_date)
(
PARTITION p1 VALUES LESS THAN('2023-01-01'),
PARTITION p2 VALUES LESS THAN('2023-02-01'),
PARTITION p3 VALUES LESS THAN('2023-03-01'),
PARTITION p4 VALUES LESS THAN('2023-04-01')
);
CREATE TABLE sales_range_columns
(
dept_no INT,
part_no INT,
country varchar(20),
date DATE,
amount INT
)
PARTITION BY RANGE COLUMNS(dept_no, part_no)
(
PARTITION p1 VALUES LESS THAN(1000, MAXVALUE),
PARTITION p2 VALUES LESS THAN(2000, MAXVALUE),
PARTITION p3 VALUES LESS THAN(3000, MAXVALUE),
PARTITION p4 VALUES LESS THAN(4000, MAXVALUE)
);