All Products
Search
Document Center

PolarDB:RANGE

Last Updated:Mar 29, 2026

Partisi rentang membagi data tabel ke dalam partisi berdasarkan nilai kolom yang berada dalam rentang tertentu. Setiap partisi menyimpan baris-baris dengan kunci partisi yang nilainya kurang dari batas atas yang ditentukan, dan batas-batas tersebut harus bersifat inkremental secara ketat.

Partisi rentang cocok digunakan saat Anda perlu:

  • Menjalankan kueri atau menghapus data berdasarkan periode waktu — hapus seluruh partisi alih-alih menjalankan pernyataan DELETE dengan filter tanggal, yang jauh lebih cepat pada tabel besar.

  • Membuat partisi berdasarkan rentang numerik kontinu — misalnya jumlah penjualan, ID, atau skor.

  • Meningkatkan performa kueri melalui pemangkasan partisi — kueri yang difilter berdasarkan kunci partisi dapat melewati partisi yang tidak relevan sepenuhnya.

PolarDB for MySQL mendukung dua bentuk: PARTITION BY RANGE (berbasis ekspresi, satu kolom) dan PARTITION BY RANGE COLUMNS (berbasis kolom, mendukung beberapa kolom dan tipe data yang lebih luas).

Sintaks

CREATE TABLE ... PARTITION BY RANGE {(expr) | COLUMNS(column_list)}
(partition_definition [, partition_definition] ...);

Dengan partition_definition sebagai:

PARTITION partition_name
    VALUES LESS THAN {(value | value_list) | MAXVALUE}

Parameter

ParameterDeskripsi
exprEkspresi partisi. Harus menghasilkan nilai bertipe INT. Tipe string tidak didukung.
column_listDaftar kolom kunci partisi untuk digunakan dengan RANGE COLUMNS. Ekspresi tidak didukung; hanya nama kolom yang diperbolehkan.
valueNilai batas atas untuk suatu partisi.
value_listDaftar nilai batas atas, satu untuk setiap kolom. Digunakan dengan RANGE COLUMNS saat beberapa kunci partisi ditentukan.
MAXVALUENilai maksimum partisi. Selalu tambahkan partisi MAXVALUE sebagai partisi terakhir untuk memastikan semua baris memiliki partisi yang sesuai.
partition_nameNama partisi. Harus unik dalam tabel.

RANGE vs RANGE COLUMNS

FiturPARTITION BY RANGEPARTITION BY RANGE COLUMNS
Jumlah kunci partisiHanya satu kolomSatu atau lebih kolom
EkspresiDidukungTidak didukung; hanya nama kolom
Tipe data yang didukungINT (ekspresi harus menghasilkan nilai INT)INT, tipe string, DATE, DATETIME

Gunakan RANGE COLUMNS saat Anda perlu membuat partisi langsung berdasarkan kolom DATE atau DATETIME, atau saat Anda memerlukan kunci partisi komposit yang mencakup beberapa kolom.

Contoh

Partisi berdasarkan rentang numerik

Contoh berikut membuat partisi pada tabel penjualan berdasarkan kolom amount. Setiap partisi menyimpan baris-baris dengan nilai amount yang kurang dari nilai batas. Partisi terakhir menggunakan MAXVALUE untuk menampung semua baris tersisa.

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)
);

Partisi berdasarkan kolom tanggal (RANGE COLUMNS)

RANGE COLUMNS memungkinkan Anda membuat partisi langsung pada kolom DATE tanpa membungkusnya dalam ekspresi. Contoh berikut membuat partisi bulanan berdasarkan kolom create_date.

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')
);

Partisi berdasarkan beberapa kolom (RANGE COLUMNS)

RANGE COLUMNS mendukung kunci partisi komposit.

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)
);