Analisis perbezaan prestasi pertanyaan PostgreSQL LIKE
Pengendali LIKE PostgreSQL terkenal dengan operasi intensif sumbernya, dengan perbezaan masa tindak balas yang ketara. Masalah ini berterusan walaupun terdapat indeks btree pada medan yang berkaitan (yang biasanya memudahkan pertanyaan LIKE).
Analisis Penyelesaian
Ada yang mencadangkan menggunakan Carian Teks Penuh (FTS) untuk menyelesaikan masalah ini, tetapi ini tidak berfungsi untuk operasi LIKE. Cara terbaik ialah memanfaatkan jenis indeks tertentu:
Indeks Trigram
Pasang modul pg_trgm untuk mencipta indeks tiga kali ganda GIN atau GiST. Kembar tiga menangkap urutan tiga aksara dalam satu perkataan, menyokong mod SUKA dan ILIKE. Untuk nilai kurang daripada tiga aksara, imbasan indeks masih digunakan untuk memastikan prestasi.
Padanan Awalan
Gunakan operator ^@ yang diperkenalkan dalam PostgreSQL 11. Operator ini cekap melaksanakan padanan awalan tanpa awalan kad bebas. Walau bagaimanapun, penggunaannya mungkin terhad sehingga pengoptimuman lanjut dibuat dalam versi PostgreSQL akan datang.
KUMPULKAN "C" dan teks_pattern_ops
COLLATE "C" mencipta indeks menggunakan pengumpulan C, memberikan padanan awalan yang serupa dengan operator ^@. Sebagai alternatif, anda boleh menggunakan text_pattern_ops atau varchar_pattern_ops untuk mencipta indeks btree yang memberikan prestasi terbaik untuk corak berlabuh kiri (iaitu, corak tanpa kad bebas utama).
Nota lain
Dengan menggunakan teknik pengindeksan yang sesuai, anda boleh meningkatkan prestasi pertanyaan LIKE dengan ketara dalam PostgreSQL, mengurangkan perbezaan masa tindak balas dan memastikan prestasi yang konsisten.
Atas ialah kandungan terperinci Bagaimanakah saya Boleh Mengoptimumkan Prestasi Pertanyaan SEPERTI PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!