Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan PostgreSQL SEPERTI Saya Sangat Lambat, dan Bagaimana Saya Boleh Mempercepatkannya?

Mengapa Pertanyaan PostgreSQL SEPERTI Saya Sangat Lambat, dan Bagaimana Saya Boleh Mempercepatkannya?

Susan Sarandon
Susan Sarandonasal
2025-01-23 03:46:10988semak imbas

Why Are My PostgreSQL LIKE Queries So Slow, and How Can I Speed Them Up?

Pertanyaan SEPERTI PostgreSQL: Kesesakan Prestasi dan Strategi Pengoptimuman

Pertanyaan

PostgreSQL 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:

  • Padanan corak dengan SUKA, SERUPA, atau ungkapan biasa
  • Bagaimana LIKE dilaksanakan?
  • Mencari rentetan serupa dengan cekap dalam PostgreSQL

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn