全部产品
Search
文档中心

PolarDB:Memperoleh Pernyataan DDL yang Digunakan untuk Membuat IMCI

更新时间:Jul 02, 2025

Anda dapat memanggil prosedur tersimpan dbms_imci.columnar_advise() untuk mendapatkan pernyataan DDL yang digunakan dalam pembuatan IMCI. Saat mengeksekusi pernyataan DDL yang dihasilkan, Anda dapat mengonfigurasi IMCI agar valid untuk kolom-kolom yang awalnya tidak valid. Ulangi proses ini hingga IMCI valid untuk semua kolom yang terlibat dalam pernyataan SQL.

Prasyarat

  • Kluster PolarDB Anda menggunakan salah satu versi berikut:

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

    • Kluster PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.2.12 atau lebih baru.

  • Anda memiliki izin baca (SELECT) pada tabel tertentu.

Sintaksis

  • Mendapatkan pernyataan DDL untuk membuat IMCI pada sebuah tabel.

    dbms_imci.columnar_advise('<query_string>');
  • Mendapatkan pernyataan DDL untuk membuat IMCI pada kolom tertentu.

    dbms_imci.columnar_advise_by_columns('<query_string>');

Parameter

Parameter

Deskripsi

query_string

Pernyataan SQL yang akan diurai.

Catatan
  • Pernyataan SQL harus merupakan pernyataan SELECT yang valid. Pernyataan DML lain seperti INSERT, UPDATE, atau DELETE tidak didukung. Jika pernyataan SELECT mengandung kesalahan, pesan kesalahan akan dikembalikan. Contohnya, kolom yang tidak ada terlibat.

  • Nilai dari query_string harus berupa string dan tidak boleh berupa nilai variabel atau hasil kueri.

Peringatan

Anda hanya dapat memanggil prosedur tersimpan untuk mendapatkan pernyataan DDL, tetapi tidak untuk mengeksekusinya.

Contoh

Tabel t1 dan t2 digunakan dalam contoh-contoh berikut.

  1. Eksekusi pernyataan berikut untuk beralih ke database test:

    use test;
  2. Eksekusi pernyataan berikut untuk membuat tabel t1 dan t2:

    create table t1 (a int, b int) engine = innodb;
    create table t2 (a int, b int) engine = innodb;
  3. Panggil prosedur tersimpan untuk mendapatkan pernyataan DDL.

    • Mendapatkan pernyataan DDL untuk membuat IMCI pada sebuah tabel.

      call dbms_imci.columnar_advise('select count(t1.a) from t1 inner join t2 on t1.a = t2.a group by t1.b');

      Hasil sampel:

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

      Tidak ada IMCI yang dibuat untuk kolom dalam tabel t1 dan t2 yang terlibat dalam pernyataan SELECT. Setelah Anda memanggil prosedur tersimpan untuk mendapatkan pernyataan DDL yang digunakan untuk membuat IMCI, eksekusi pernyataan DDL tersebut akan menambahkan IMCI untuk semua kolom dalam tabel t1 dan t2.

    • Mendapatkan pernyataan DDL untuk membuat IMCI pada kolom tertentu.

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

      Hasil sampel:

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

      Hanya kolom t1.a, t1.b, dan t2.a yang terlibat dalam pernyataan SELECT. Anda dapat memanggil prosedur tersimpan dbms_imci.columnar_advise_by_columns() untuk mendapatkan pernyataan DDL yang digunakan untuk membuat IMCI pada kolom tertentu. Eksekusi pernyataan DDL tersebut dan pastikan bahwa IMCI valid untuk semua kolom yang terlibat dalam pernyataan SELECT.