Justin Cave’in yazdıklarına ek olarak, PostgreSQL 9.1’den bu yana ( ) veya ( ) ile herhangi bir aramayı hızlandırabilir ve normal düzenli ifadenin de ( ) ile eşleşmesini sağlayabilirsiniz . Bağlantılı olmayan ifadeleri hızlandırmak için pg_trgm modülü tarafından sağlanan operatör sınıflarını bir GIN veya GiST endeksi ile kullanın . Uzantıyı yüklemek için veritabanı başına bir kez çalıştırın:LIKE
~~
ILIKE
~~*
~
LIKE
CREATE EXTENSION pg_trgm;
Formun bir dizinini oluşturun
CREATE INDEX tbl_col_gin_trgm_idx ON tbl USING gin (col gin_trgm_ops);
Veya:
CREATE INDEX tbl_col_gist_trgm_idx ON tbl USING gist (col gist_trgm_ops);
Bir GIN veya GiST endeksi oluşturmak ve sürdürmek bir maliyet taşır, ancak tablonuz yoğun bir şekilde yazılmış değilse, bu sizin için harika bir özelliktir.
Depesz , blogunda yeni özellik hakkında mükemmel bir makale yazdı .
Cin mi GiST mi?
Kılavuzdan bu iki alıntı bazı rehberlik sağlamalıdır
GiST ve GIN indeksleme arasındaki seçim, başka bir yerde tartışılan GiST ve GIN'in göreceli performans özelliklerine bağlıdır. Genel bir kural olarak, bir GIN endeksi aramak için bir GiST endeksinden daha hızlıdır, ancak oluşturulması ya da güncellenmesi daha yavaştır; Bu nedenle, GIN statik veriler için ve GiST sıklıkla güncellenen veriler için daha uygundur.
Ancak, uzaklık operatörünü kullanan "en yakın komşu" türü için sorgular <->
:
Bu, GiST endeksleri tarafından oldukça verimli bir şekilde uygulanabilir, ancak GIN endeksleri tarafından uygulanamaz.