Selain apa yang ditulis Justin Cave, sejak PostgreSQL 9.1 Anda dapat mempercepat pencarian apa pun dengan LIKE
( ~~
) atau ILIKE
( ~~*
), dan kecocokan ekspresi reguler dasar, juga ( ~
). Gunakan kelas operator yang disediakan oleh modul pg_trgm dengan indeks GIN atau GiST untuk mempercepat LIKE
ekspresi yang tidak berlabuh kiri. Untuk menginstal ekstensi, jalankan sekali per basis data:
CREATE EXTENSION pg_trgm;
Buat indeks formulir
CREATE INDEX tbl_col_gin_trgm_idx ON tbl USING gin (col gin_trgm_ops);
Atau:
CREATE INDEX tbl_col_gist_trgm_idx ON tbl USING gist (col gist_trgm_ops);
Membuat dan memelihara indeks GIN atau GiST membawa biaya, tetapi jika meja Anda tidak banyak ditulis, ini adalah fitur yang hebat untuk Anda.
Depesz telah menulis artikel yang bagus di blognya tentang fitur baru.
GIN atau GiST?
Dua kutipan dari manual ini harus memberikan beberapa panduan
Pilihan antara indeks GiST dan GIN tergantung pada karakteristik kinerja relatif GiST dan GIN, yang dibahas di tempat lain. Sebagai patokan, indeks GIN lebih cepat untuk dicari daripada indeks GiST, tetapi lebih lambat untuk dibangun atau diperbarui; jadi GIN lebih cocok untuk data statis dan GiST untuk data yang sering diperbarui.
Tetapi untuk jenis "tetangga terdekat" pertanyaan dengan menggunakan operator jarak <->
:
Ini dapat diimplementasikan dengan cukup efisien oleh indeks GiST, tetapi tidak oleh indeks GIN.