全部产品
Search
文档中心

PolarDB:RANGE-HASH

更新时间:Jul 09, 2025

Topik ini menjelaskan cara membuat tabel partisi range-hash.

Sintaksis

Pernyataan berikut digunakan untuk membuat tabel partisi RANGE-HASH. Partisi tingkat pertama adalah tipe RANGE [COLUMNS], dan partisi tingkat kedua adalah tipe HASH/KEY.

CREATE TABLE [ schema. ]table_name
 table_definition
   PARTITION BY RANGE {(expr) | COLUMNS(column_list)}
   SUBPARTITION BY {[LINEAR] HASH(expr) [SUBPARTITIONS number]
   | [LINEAR] KEY [ALGORITHM={1 | 2}] (column_list)}
   (partition_definition [, partition_definition] ...);

Definisi partisi adalah:

 PARTITION partition_name
        VALUES LESS THAN {(expr | value_list) | MAXVALUE}
        (subpartition_definition [, subpartition_definition] ...)

Definisi subpartisi adalah:

SUBPARTITION subpartition_name

Parameter

Parameter

Deskripsi

expr

Ekspresi bidang partisi, saat ini hanya mendukung tipe INT, tidak mendukung tipe string.

column_list

Daftar kolom kunci partisi. Ekspresi tidak didukung.

number

Jumlah subpartisi.

value

Nilai batas partisi.

value_list

Daftar nilai batas partisi. Digunakan dalam RANGE COLUMNS().

MAXVALUE

Nilai maksimum.

partition_name

Nama partisi. Nama harus unik di dalam tabel yang sama.

subpartition_name

Nama subpartisi. Nama harus unik di dalam tabel yang sama.

Contoh

  • Partisi tingkat pertama menggunakan tipe RANGE (expr). Di sini, expr merupakan ekspresi partisi. Hanya tipe INT yang didukung; tipe string tidak didukung.

    CREATE TABLE sales_range_hash_1
    (
      s_id        varchar(20),
      dept_no     INT,
      part_no     INT,
      country     varchar(20),
      date        DATE,
      amount      INT,
      primary key (s_id, amount)
    )
    PARTITION BY RANGE (amount)
    SUBPARTITION BY KEY(s_id) SUBPARTITIONS 3
    (
      PARTITION p1 VALUES LESS THAN (1000),
      PARTITION p2 VALUES LESS THAN (2000),
      PARTITION p3 VALUES LESS THAN (3000),
      PARTITION p4 VALUES LESS THAN (4000)
    );
  • Partisi tingkat pertama menggunakan tipe RANGE COLUMNS(column_list). column_list adalah daftar kolom kunci partisi. Ekspresi tidak didukung.

    CREATE TABLE sales_range_hash_2
    (
      s_id        varchar(20),
      dept_no     INT,
      part_no     INT,
      country     varchar(20),
      date        DATE,
      amount      INT,
      primary key (s_id, date)
    )
    PARTITION BY RANGE COLUMNS(date)
    SUBPARTITION BY KEY(s_id) SUBPARTITIONS 3
    (
      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')
    );