Prosedur tersimpan dbms_imci.check_columnar_index() dapat mengurai Pernyataan SQL yang dimasukkan, mendapatkan semua kolom yang digunakan dalam pernyataan tersebut, dan memeriksa apakah Indeks Kolom dalam Memori (IMCI) valid untuk kolom-kolom tersebut.
Jika kolom tempat IMCI tidak valid terlibat dalam pernyataan SQL, prosedur tersimpan akan mengembalikan nama basis data, nama tabel, dan nama kolom.
Jika IMCI valid untuk semua kolom dalam pernyataan SQL, prosedur tersimpan akan mengembalikan set hasil kosong.
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 yang ditentukan.
Sintaksis
dbms_imci.check_columnar_index('<query_string>');Parameter
Parameter | Deskripsi |
query_string | Pernyataan SQL yang akan diuraikan. Catatan
|
Catatan Penggunaan
Prosedur tersimpan ini peka huruf besar-kecil.
Saat menggunakan prosedur tersimpan untuk mengurai pernyataan SQL dan menambahkan nama basis data sebelum nama tabel dalam pernyataan SQL, nama basis data tersebut digunakan. Jika tidak ada nama basis data yang ditambahkan sebelum nama tabel dalam pernyataan SQL, Anda harus menjalankan pernyataan
use db_nameuntuk beralih ke basis data yang berisi tabel dalam pernyataan SQL, lalu jalankan prosedur tersimpan.Meskipun tidak ada batasan panjang untuk pernyataan SQL, panjang pernyataan SQL yang dikirim dari klien ke basis data dibatasi oleh parameter
thread_stackuntuk penguraian pernyataan SQL dan parameter sepertimax_allowed_packet.Jika IMCI tidak mendukung tipe data kolom dalam pernyataan SQL, pesan kesalahan akan dikembalikan saat prosedur tersimpan dipanggil.
Pernyataan SELECT dapat berupa bentuk parameter dari pernyataan yang disiapkan. Namun, kata kunci PREPARE... FROM tidak dapat ditambahkan.
Jika pernyataan SQL mengandung karakter yang perlu diloloskan, seperti
'atau", Anda harus meloloskan karakter tersebut berdasarkan sintaksis MySQL. Contoh kode:Ganti
'dalam pernyataan SQL dengan''.call dbms_imci.check_columnar_index('select t1.a from t1 where t1.b = ''some_string''');Ganti
"dalam pernyataan SQL dengan"".call dbms_imci.check_columnar_index("select t1.a from t1 where t1.b = ""some_string""");
Untuk aturan pelolosan lebih lanjut, lihat Dokumentasi MySQL.
Contoh
Tabel t1, t2, dan t3 digunakan dalam contoh-contoh berikut. Panggil prosedur tersimpan untuk memeriksa apakah IMCI valid untuk semua kolom dalam pernyataan SQL.
Jalankan pernyataan berikut untuk beralih ke basis data
test:use test;Jalankan pernyataan berikut untuk membuat tabel
t1,t2, dant3. IMCI valid untuk semua kolom dalam tabelt3.create table t1 (a int, b int) engine = innodb; create table t2 (a int, b int) engine = innodb; create table t3 (a int, b int) engine = innodb comment 'columnar=1';Panggil prosedur tersimpan untuk memeriksa apakah IMCI valid untuk semua kolom dalam pernyataan SQL.
Pernyataan SQL menggunakan kolom dalam tabel
t1dant2.call dbms_imci.check_columnar_index('select count(t1.a) from t1 inner join t2 on t1.a = t2.a group by t1.b');Hasil contoh:
+--------------+------------+-------------+ | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | +--------------+------------+-------------+ | test | t1 | a | | test | t1 | b | | test | t2 | a | +--------------+------------+-------------+ 3 baris dalam set (0,01 detik)Pernyataan SQL menggunakan kolom
t1.a,t1.b, dant2.a, dan IMCI tidak valid untuk ketiga kolom tersebut. Oleh karena itu, prosedur tersimpan mengembalikan nama basis data, nama tabel, dan nama ketiga kolom tersebut.Kolom dalam pernyataan SQL milik tabel
t3.call dbms_imci.check_columnar_index('select a, b from t3');Hasil contoh:
Set kosong (0,00 detik)IMCI valid untuk semua kolom dalam tabel
t3. Oleh karena itu, prosedur tersimpan mengembalikan set hasil kosong.