All Products
Search
Document Center

PolarDB:Dapatkan pernyataan DDL yang digunakan untuk membuat IMCI

Last Updated:Mar 28, 2026

Panggil dbms_imci.columnar_advise() atau dbms_imci.columnar_advise_by_columns() untuk menghasilkan pernyataan DDL yang diperlukan guna membuat In-Memory Columnar Index (IMCI) untuk kueri tertentu. Kedua prosedur tersimpan tersebut hanya mengembalikan pernyataan DDL—tidak mengeksekusinya. Setelah menjalankan pernyataan DDL yang dikembalikan, ulangi proses ini jika masih terdapat kolom yang tidak valid hingga semua kolom yang terlibat dalam kueri memiliki IMCI yang valid.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Kluster PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.30 atau lebih baru

  • Izin SELECT pada tabel target

Prosedur

Pilih prosedur berdasarkan cakupan penerapan IMCI yang diinginkan:

ProsedurCakupanGunakan saat
dbms_imci.columnar_advise()Semua kolom dalam tabel yang dikueriAnda menginginkan cakupan kolom penuh pada setiap tabel yang disentuh oleh kueri
dbms_imci.columnar_advise_by_columns()Hanya kolom yang dirujuk dalam kueriAnda menginginkan IMCI terarah yang dibatasi hanya pada kolom yang benar-benar digunakan oleh kueri

Sintaksis

Dapatkan pernyataan DDL untuk membuat IMCI pada semua kolom dalam tabel yang dikueri:

CALL dbms_imci.columnar_advise('<query_string>');

Dapatkan pernyataan DDL untuk membuat IMCI hanya pada kolom spesifik yang dirujuk dalam kueri:

CALL dbms_imci.columnar_advise_by_columns('<query_string>');

Parameter

ParameterTipeDeskripsi
query_stringString literalPernyataan SQL yang akan dianalisis. Harus berupa pernyataan SELECT yang valid — pernyataan INSERT, UPDATE, dan DELETE tidak didukung. Harus berupa string literal, bukan variabel atau hasil kueri. Jika pernyataan SELECT merujuk kolom yang tidak ada, kesalahan akan dikembalikan.

Contoh

Contoh berikut menggunakan dua tabel, t1 dan t2, dalam database test.

Siapkan tabel contoh:

USE test;

CREATE TABLE t1 (a INT, b INT) ENGINE = InnoDB;
CREATE TABLE t2 (a INT, b INT) ENGINE = InnoDB;

Dapatkan DDL untuk semua kolom dalam tabel yang dikueri

Panggil dbms_imci.columnar_advise() dengan kueri target:

CALL dbms_imci.columnar_advise('SELECT COUNT(t1.a) FROM t1 INNER JOIN t2 ON t1.a = t2.a GROUP BY t1.b');

Contoh output:

+-------------------------------------------+
| DDL_STATEMENT                             |
+-------------------------------------------+
| ALTER TABLE test.t1 COMMENT='COLUMNAR=1'; |
| ALTER TABLE test.t2 COMMENT='COLUMNAR=1'; |
+-------------------------------------------+
2 rows in set (0.00 sec)

Output berisi satu pernyataan DDL per tabel. Setiap pernyataan mengaktifkan IMCI untuk semua kolom dalam tabel tersebut. Eksekusi pernyataan-pernyataan ini untuk membuat IMCI.

Dapatkan DDL untuk kolom spesifik yang dirujuk dalam kueri

Panggil dbms_imci.columnar_advise_by_columns() dengan kueri yang sama:

CALL dbms_imci.columnar_advise_by_columns('SELECT COUNT(t1.a) FROM t1 INNER JOIN t2 ON t1.a = t2.a GROUP BY t1.b');

Contoh output:

+-------------------------------------------------------------------------------------------------------------------------------------------+
| DDL_STATEMENT                                                                                                                             |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ALTER TABLE test.t1 MODIFY COLUMN a int(11) DEFAULT NULL COMMENT 'COLUMNAR=1', MODIFY COLUMN b int(11) DEFAULT NULL COMMENT 'COLUMNAR=1'; |
| ALTER TABLE test.t2 MODIFY COLUMN a int(11) DEFAULT NULL COMMENT 'COLUMNAR=1';                                                            |
+-------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Karena kueri hanya merujuk t1.a, t1.b, dan t2.a, output hanya membuat IMCI untuk ketiga kolom tersebut. Eksekusi pernyataan-pernyataan ini untuk mengaktifkan IMCI pada kolom-kolom yang tepat digunakan oleh kueri.

Iterasi hingga semua kolom valid

Setelah mengeksekusi pernyataan DDL, beberapa kolom mungkin masih memiliki status IMCI yang tidak valid. Panggil kembali prosedur tersimpan yang sama dengan kueri yang sama untuk mendapatkan pernyataan DDL terbaru, lalu eksekusi pernyataan tersebut. Ulangi siklus ini hingga prosedur tersimpan tidak lagi mengembalikan pernyataan tambahan dan IMCI menjadi valid untuk semua kolom yang digunakan oleh kueri.