Rumah >pangkalan data >tutorial mysql >Bagaimanakah Modul pg_trgm PostgreSQL Mendapatkan Rentetan Serupa dengan Cekap dalam Set Data Besar?
Mencari Rentetan Serupa dengan PostgreSQL Dengan Cepat
Salah satu keperluan biasa dalam mendapatkan semula teks ialah mencari rentetan yang serupa dengan rentetan input yang diberikan . PostgreSQL menyediakan modul pg_trgm untuk tujuan ini. Walau bagaimanapun, apabila berurusan dengan set data yang besar, pendekatan brute-force untuk mengira skor persamaan untuk setiap pasangan rentetan boleh menjadi tidak cekap.
Pendekatan konvensional melibatkan penciptaan indeks GiST pada lajur nama menggunakan gist_trgm_ops sebagai pengendali indeks . Masalah dengan pendekatan ini ialah ia memerlukan pengiraan skor persamaan untuk setiap pasangan elemen, menghasilkan kerumitan masa kuadratik.
Penyelesaian yang lebih cekap ialah menggunakan operator % yang disediakan oleh pg_trgm . Dengan menetapkan parameter pg_trgm.similarity_threshold kepada nilai yang dipratentukan (mis., 0.8), pengoptimum boleh menggunakan indeks trigram GiST untuk menapis pasangan calon yang berada di bawah ambang persamaan yang ditentukan. Ini mengurangkan dengan ketara bilangan pengiraan persamaan yang diperlukan dan meningkatkan prestasi pertanyaan.
SET pg_trgm.similarity_threshold = 0.8; SELECT similarity(n1.name, n2.name) AS sim, n1.name, n2.name FROM names n1 JOIN names n2 ON n1.name <> n2.name AND n1.name % n2.name ORDER BY sim DESC;
Pertanyaan yang dioptimumkan ini menggunakan operator % untuk menapis pra pasangan calon sebelum mengira skor persamaan, meningkatkan prestasi pertanyaan dengan ketara.
Atas ialah kandungan terperinci Bagaimanakah Modul pg_trgm PostgreSQL Mendapatkan Rentetan Serupa dengan Cekap dalam Set Data Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!