Anda dapat membuat indeks parsial saat membuat tabel terpartisi atau membuat indeks parsial pada tabel terpartisi yang sudah ada.
Buat indeks parsial saat Anda membuat tabel terpartisi
Sintaksis
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name
[(create_definition,...)]
[table_options]
partition_options
...create_definition adalah:
{
col_name column_definition
| {INDEX | KEY} [index_name] [index_type] (key_part,...)
[index_option] [partial_partition_option]
...
}partial_partition_option adalah:
([PARTITION partition_name0[(SUBPARTITION subpartition_name0[, ...])]][,...]
)Untuk informasi lebih lanjut tentang parameter lain dalam sintaksis, lihat CREATE TABLE.
Parameter
Parameter | Deskripsi |
table_name | Nama tabel. |
col_name | Nama kolom. |
partition_name0 | Nama partisi. Catatan Anda dapat menentukan beberapa partisi. Pisahkan beberapa nama partisi dengan koma (,). |
subpartition_name0 | Nama subpartisi. Catatan Anda dapat menentukan beberapa subpartisi. Pisahkan beberapa nama subpartisi dengan koma (,). |
Contoh
Buat indeks parsial pada partisi.
Kode contoh berikut menunjukkan cara membuat tabel terpartisi bernama
ordersdan kemudian membuat indeks parsial bernamao_ind_dp(dept_no, part_no)pada partisiorders_202212untuk bulan Desember serta indeks parsial bernamao_ind_amout(amount, order_id)pada partisi historis lainnya:CREATE TABLE orders ( order_id INT, dept_no INT, part_no INT, country varchar(20), date DATE, amount INT, Primary Key(order_id), KEY o_ind_dp(dept_no, part_no) (partition orders_202212), KEY o_ind_amout(amount, order_id) (partition orders_202201, partition orders_202202, partition orders_202203, partition orders_202204, partition orders_202205, partition orders_202206, partition orders_202207, partition orders_202208, partition orders_202209, partition orders_202210, partition orders_202211 ) ) PARTITION BY RANGE(month(date)) ( PARTITION orders_202201 VALUES LESS THAN(2), PARTITION orders_202202 VALUES LESS THAN(3), PARTITION orders_202203 VALUES LESS THAN(4), PARTITION orders_202204 VALUES LESS THAN(5), PARTITION orders_202205 VALUES LESS THAN(6), PARTITION orders_202206 VALUES LESS THAN(7), PARTITION orders_202207 VALUES LESS THAN(8), PARTITION orders_202208 VALUES LESS THAN(9), PARTITION orders_202209 VALUES LESS THAN(10), PARTITION orders_202210 VALUES LESS THAN(11), PARTITION orders_202211 VALUES LESS THAN(12), PARTITION orders_202212 VALUES LESS THAN(13) );Buat indeks parsial pada subpartisi.
Kode contoh berikut menunjukkan cara membuat tabel subpartisi LIST-RANGE bernama
tenantsdan membuat indeks parsial bernamaind_idpada semua subpartisi dari partisip0serta pada subpartisip1_1,p1_2, danp1_3dari partisip1. Selanjutnya, buat indeks parsial bernamaind_datepada subpartisip0_1danp0_2dari partisip0serta pada subpartisip1_1danp1_2dari partisip1.CREATE TABLE tenants ( id INT, date DATE, count INT, KEY ind_id (id) ( partition p0, partition p1 (subpartition p1_1, subpartition p1_2, subpartition p1_3) ), KEY ind_date (date) ( partition p0 (subpartition p0_1, subpartition p0_2), partition p1 (subpartition p1_1, subpartition p1_2) ) ) PARTITION BY LIST COLUMNS(id) SUBPARTITION BY RANGE (month(date))( PARTITION p0 VALUES IN (1, 2, 3, 4, 5) ( SUBPARTITION p0_1 VALUES LESS THAN(4), SUBPARTITION p0_2 VALUES LESS THAN(7), SUBPARTITION p0_3 VALUES LESS THAN(10), SUBPARTITION p0_4 VALUES LESS THAN(13) ), PARTITION p1 VALUES IN (11, 12, 13, 14, 15) ( SUBPARTITION p1_1 VALUES LESS THAN(4), SUBPARTITION p1_2 VALUES LESS THAN(7), SUBPARTITION p1_3 VALUES LESS THAN(10), SUBPARTITION p1_4 VALUES LESS THAN(13) ) );
Buat indeks parsial pada tabel terpartisi yang sudah ada
Sintaksis
CREATE [UNIQUE] INDEX index_name
[index_type]
ON table_name (key_part,...)
[index_option]
[algorithm_option | lock_option | partial_partition_option] ... partial_partition_option adalah:
([PARTITION partition_name0[(SUBPARTITION subpartition_name0[, ...])]][,...]
)Untuk informasi lebih lanjut tentang parameter lain dalam sintaksis, lihat CREATE INDEX.
Parameter
Parameter | Deskripsi |
index_name | Nama indeks. |
table_name | Nama tabel. |
partition_name0 | Nama partisi. Catatan Anda dapat menentukan beberapa partisi. Pisahkan beberapa nama partisi dengan koma (,). |
subpartition_name0 | Nama subpartisi. Catatan Anda dapat menentukan beberapa subpartisi. Pisahkan beberapa nama subpartisi dengan koma (,). |
Contoh
Buat indeks parsial pada partisi.
Kode contoh berikut menunjukkan cara membuat indeks parsial bernama
o_part_idpada partisiorders_202201dari tabel terpartisiorders:CREATE INDEX o_part_id ON orders(part_no, order_id) (partition orders_202201);Anda juga dapat menjalankan pernyataan
ALTER TABLE ADD KEYuntuk membuat indeks parsial dalam contoh sebelumnya.ALTER TABLE orders ADD KEY o_part_id(part_no, order_id) (partition orders_202201);Buat indeks parsial pada subpartisi.
Kode contoh berikut menunjukkan cara membuat indeks parsial bernama
ind_countpada semua subpartisi dari partisip0serta pada subpartisip1_1dari partisip1dalam tabel terpartisitenants:CREATE INDEX ind_count ON tenants(count) (partition p0, partition p1 (subpartition p1_1));Anda juga dapat menjalankan pernyataan
ALTER TABLE ADD KEYuntuk membuat indeks parsial dalam contoh sebelumnya.ALTER TABLE tenants ADD KEY ind_count(count) (partition p0, partition p1 (subpartition p1_1));