全部产品
Search
文档中心

Tablestore:Pushdown komputasi

更新时间:Jul 02, 2025

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.

Catatan

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

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.

SELECT * FROM exampletable WHERE a > 1;  /* Pushdown operator didukung untuk perbandingan antara kolom data dan konstanta. */
SELECT * FROM exampletable WHERE a > b;  /* Pushdown operator tidak didukung untuk perbandingan antar kolom data. */

Fungsi agregat

  • Agregasi dasar: MIN, MAX, COUNT, AVG, SUM, dan ANY_VALUE

  • Dedupe dan agregasi: COUNT(DISTINCT col_name)

  • Pengelompokan: GROUP BY col_name

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.

SELECT COUNT(*) FROM exampletable;           /* Pushdown operator didukung untuk penggunaan khusus COUNT(*). */
SELECT SUM(a) FROM exampletable;             /* Pushdown operator didukung jika parameter fungsi adalah kolom data. */
SELECT a, b FROM exampletable GROUP BY a, b; /* Pushdown operator didukung untuk pengelompokan berdasarkan kolom data. */
SELECT a FROM exampletable GROUP BY a+1;     /* Pushdown operator tidak didukung untuk pengelompokan berdasarkan ekspresi. */
SELECT SUM(a+b) FROM exampletable;           /* Pushdown operator tidak didukung jika parameter fungsi adalah ekspresi. */

LIMIT

  • LIMIT row_count

  • ORDER BY col_name LIMIT row_count

Pushdown operator hanya didukung jika parameter dalam klausa ORDER BY adalah kolom data.

SELECT * FROM exampletable ORDER BY a LIMIT 1;     /* Pushdown operator didukung untuk pengurutan berdasarkan kolom data. */
SELECT * FROM exampletable ORDER BY a, b LIMIT 1;  /* Pushdown operator didukung untuk pengurutan berdasarkan kolom data. */
SELECT * FROM exampletable ORDER BY a+1 LIMIT 1;   /* Pushdown operator tidak didukung untuk pengurutan berdasarkan ekspresi. */