Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan PostgreSQL SEPERTI Saya Sangat Lambat, dan Bagaimana Saya Boleh Mempercepatkannya?
Pertanyaan SEPERTI PostgreSQL: Kesesakan Prestasi dan Strategi Pengoptimuman
PertanyaanPostgreSQL LIKE
, yang terkenal dengan keamatan pengiraannya, telah menunjukkan prestasi yang tidak konsisten terhadap jadual pangkalan data tertentu. Walaupun sesetengah pertanyaan selesai dalam masa 200-400 milisaat, yang lain mengambil masa sehingga 30 saat.
Had Pengindeksan Standard
Percubaan awal menggunakan indeks b-tree pada medan owner1
gagal meningkatkan prestasi. Percubaan dengan pelbagai LIKE
variasi sintaks juga tidak menghasilkan hasil yang ketara.
Indeks Trigram: Penyelesaian Unggul
Pelanjutan pg_trgm
menawarkan indeks trigram (GIN/GiST) yang menyediakan peningkatan prestasi yang besar untuk operasi LIKE
dan ILIKE
, terutamanya dengan rentetan yang lebih panjang. Yang penting, indeks ini juga menyokong perkataan yang lebih pendek daripada tiga aksara.
Mengoptimumkan Padanan Awalan
Untuk carian tanpa kad bebas utama, pertimbangkan alternatif ini:
^@
Fungsi Operator/starts_with()
(PostgreSQL 11 ): Fungsi ^@
dan starts_with()
, yang diperkenalkan dalam PostgreSQL 11, menawarkan padanan awalan yang cekap apabila digunakan dengan indeks SP-GIST .COLLATE "C"
: Indeks yang dibuat menggunakan COLLATE "C"
berkelakuan serupa dengan kelas operator text_pattern_ops
, membolehkan padanan awalan yang dioptimumkan dengan indeks b-tree.text_pattern_ops
Kelas Operator: Kelas operator ini mencipta indeks b-tree yang direka khusus untuk corak berlabuh kiri (tiada wildcard terkemuka).Sumber Tambahan
Untuk pemahaman yang lebih terperinci tentang padanan corak dalam PostgreSQL, rujuk sumber ini:
Atas ialah kandungan terperinci Mengapa Pertanyaan PostgreSQL SEPERTI Saya Sangat Lambat, dan Bagaimana Saya Boleh Mempercepatkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!