All Products
Search
Document Center

ApsaraDB RDS:Pengindeksan TrajGiST

Last Updated:Mar 30, 2026

TrajGiST adalah ekstensi indeks GiST (Generalized Search Tree) untuk data trajectory. Buat indeks TrajGiST pada kolom trajectory guna mempercepat kueri spasial dan temporal—termasuk filter berbasis waktu saja, spasial saja, maupun gabungan spasial-temporal.

Cara kerja

TrajGiST meningkatkan GiST standar dalam dua aspek:

  • Estimasi biaya indeks yang lebih baik: Ketika terdapat beberapa indeks pada suatu tabel, TrajGiST memilih indeks yang paling efisien untuk kueri tertentu dengan memperkirakan overhead indeks secara lebih akurat.

  • Kompatibilitas ke atas: TrajGiST dapat menggunakan indeks parsial—yaitu indeks yang mencakup dimensi lebih sedikit daripada yang dibutuhkan oleh kueri—untuk menyaring trajectory yang tidak sesuai sebelum komputasi eksak dijalankan. Sebagai contoh, jika hanya tersedia indeks pada sumbu t dan Anda menjalankan kueri menggunakan ST_{2DT}Intersects, indeks tersebut akan terlebih dahulu menyaring trajectory di luar rentang waktu yang ditentukan, meskipun tidak dapat menghasilkan hasil akhir yang eksak secara mandiri.

Buat indeks TrajGiST

CREATE INDEX [index_name] ON table_name USING TRAJGIST(traj_col [operator_family]);
ParameterWajibDeskripsiBawaan
index_nameTidakNama indeksDihasilkan otomatis
table_nameYaTabel yang berisi kolom trajectory
traj_colYaNama kolom trajectory
operator_familyTidakOperator family yang menentukan sumbu mana saja yang dicakup oleh indekstrajgist_ops_multi

Gunakan parameter ganos.trajectory.index_split_config untuk menentukan operator family saat mengonfigurasi perilaku pemisahan indeks.

Indeks ini mempercepat kueri yang menggunakan operator dan fungsi berikut: ST_ndIntersect, ST_ndDWithin, ST_ndContains, dan ST_ndWithin.

Pilih operator family

Setiap operator family menentukan sumbu mana saja yang diindeks dan, dengan demikian, jenis kueri yang mendapatkan manfaat darinya. Pilih operator family yang sesuai dengan dimensi yang digunakan dalam kueri Anda.

Operator familySumbu yang diindeksMempercepat kueri pada
trajgist_ops_zzDimensi elevasi saja
trajgist_ops_ttDimensi waktu saja
trajgist_ops_2dx, yDimensi spasial (2D) saja
trajgist_ops_2dtx, y, tDimensi spasial (2D) + waktu
trajgist_ops_3dx, y, zDimensi spasial (3D) saja
trajgist_ops_3dtx, y, z, tSemua kueri yang didukung oleh lima operator family sebelumnya
trajgist_ops_multiMultiple bounding boxesSemua kueri; waktu pembuatan indeks dan biaya penyimpanan lebih tinggi

Panduan:

  • Gunakan trajgist_ops_2dt atau trajgist_ops_3dt untuk sebagian besar beban kerja produksi yang menggabungkan filter spasial dan temporal.

  • Gunakan trajgist_ops_multi (nilai bawaan) ketika pola kueri bervariasi dan Anda ingin satu indeks saja mencakup semua kasus—dengan konsekuensi penggunaan penyimpanan lebih besar dan waktu proses CREATE INDEX lebih lama.

  • Gunakan operator family berbasis satu sumbu (trajgist_ops_t, trajgist_ops_z, trajgist_ops_2d) jika kueri Anda secara konsisten hanya melakukan filter pada satu dimensi dan ukuran indeks atau waktu pembuatan menjadi pertimbangan utama.

Contoh:

Indeks hanya pada sumbu t (untuk kueri yang difilter berdasarkan waktu):

CREATE INDEX traj_t_idx ON trips USING TRAJGIST(traj trajgist_ops_t);

Indeks pada sumbu x, y, dan t (untuk kueri yang menggabungkan filter spasial dan temporal):

CREATE INDEX traj_2dt_idx ON trips USING TRAJGIST(traj trajgist_ops_2dt);

Indeks multi-bounding-box bawaan:

CREATE INDEX traj_idx ON trips USING TRAJGIST(traj);

Batasan

TrajGiST hanya mendukung pengindeksan satu kolom trajectory. Indeks komposit yang mencakup beberapa kolom—di mana satu atau lebih kolom bukan bertipe trajectory—tidak didukung.