Indeks pencarian mendukung fitur seperti penyaringan kondisional, agregasi, dan pengurutan. Setelah membuat indeks pencarian, sistem dapat memanfaatkan kemampuan komputasi dari indeks tersebut dan mendorong beberapa tugas komputasi SQL ke indeks pencarian untuk dieksekusi. Hal ini menghilangkan kebutuhan untuk pemindaian tabel penuh serta meningkatkan efisiensi komputasi.
Untuk informasi lebih lanjut tentang indeks pencarian, lihat Indeks Pencarian.
Skenario
Jika indeks pencarian mencakup kolom data yang terlibat dalam pernyataan SQL, mesin SQL membaca data menggunakan indeks pencarian dan mendorong operator yang didukung oleh indeks tersebut. Sebagai contoh, sebuah tabel bernama exampletable berisi kolom a, b, c, dan d. Indeks pencarian tabel tersebut mencakup kolom a, b, dan c, yang telah diindeks. Mesin SQL membaca data menggunakan indeks pencarian ketika hanya kolom a, b, dan c yang terlibat dalam pernyataan SQL.
SELECT a, b, c, d FROM exampletable; /* Indeks pencarian tidak berisi kolom a, b, c, dan d. Mesin SQL membaca data dengan memindai seluruh tabel dan tidak mendorong operator. */
SELECT a, b, c FROM exampletable; /* Indeks pencarian berisi kolom a, b, dan c. Mesin SQL membaca data dengan menggunakan indeks pencarian dan mendorong operator. */Catatan Penggunaan
Jika ekspresi dalam klausa WHERE dari pernyataan SQL tidak sesuai dengan tipe bidang aktual, ekspresi tersebut tidak dapat didorong ke indeks pencarian. Hal ini mengurangi efisiensi eksekusi keseluruhan dari pernyataan SQL.
Sebagai contoh, tipe data dari bidang a dan b adalah BIGINT. Jika klausa WHERE adalah WHERE a = '123' and b = 234, a = '123' tidak dapat didorong ke indeks pencarian karena ekspresi tersebut mengandung operasi CAST implisit. Hanya b = 234 yang didorong ke indeks pencarian. Untuk mendorong seluruh klausa WHERE ke indeks pencarian, ubah klausa WHERE menjadi a = 123 and b = 234.
Prasyarat
Indeks pencarian telah dibuat. Untuk informasi lebih lanjut, lihat Buat Indeks Pencarian.
Tabel pemetaan telah dibuat. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan untuk Tabel atau Buat Tabel Pemetaan untuk Indeks Pencarian.
Operator yang dapat didorong
Tabel berikut menjelaskan operator yang dapat didorong ke indeks pencarian untuk dieksekusi dalam pernyataan SQL.
Tipe | Operator | Batasan Pushdown |
Operator logika | AND dan OR | Operator NOT tidak dapat didorong. |
Operator relasional | =, !=, <, <=, >, >=, dan BETWEEN ... AND ... | Pushdown operator hanya didukung untuk perbandingan antara kolom data dan konstanta. Pushdown operator tidak didukung untuk perbandingan antar kolom data. |
Fungsi agregat |
| Fungsi agregat dapat mengumpulkan semua data atau data dalam grup GROUP BY. Pushdown operator hanya didukung jika fungsi agregat mendukung pushdown dan parameter fungsinya adalah kolom data. |
LIMIT |
| Pushdown operator hanya didukung jika parameter dalam klausa ORDER BY adalah kolom data. |