Mengoptimumkan Pertanyaan LIKE dengan Berbilang Lajur dalam MySQL
Dalam MySQL, melaksanakan pertanyaan SELECT dengan syarat LIKE pada berbilang lajur boleh memberi kesan ketara kepada prestasi. Walau bagaimanapun, mencipta indeks mungkin tidak memberikan kelajuan yang dijangkakan.
Mengapa Indeks Tidak Membantu
Indeks dalam MySQL berfungsi dengan cekap untuk awalan lajur teks. Apabila menggunakan LIKE '%text%', pertanyaan tidak boleh menggunakan indeks kerana ia tidak dapat meramalkan panjang rentetan yang sepadan. Bilangan pembolehubah aksara sebelum teks menjadikan carian indeks tidak berkesan.
Carian Teks Penuh
Untuk senario seperti ini, MySQL mengesyorkan menggunakan Carian Teks Penuh (FTS). FTS direka khusus untuk mencari medan teks dan boleh mengendalikan pertanyaan SEPERTI dengan kad bebas utama dan mengekori. FTS tersedia untuk jadual MyISAM secara asli dan boleh dilaksanakan untuk jenis jadual lain menggunakan penyelesaian luaran.
Kesan pada Penggunaan dan Kelajuan Cakera
FTS memerlukan ruang storan tambahan untuk jadual indeks yang menyimpan kejadian perkataan dan ID baris yang sepadan. Walaupun ini boleh meningkatkan penggunaan cakera, ia biasanya tidak mempunyai kesan yang ketara pada operasi INSERT dan DELETE kerana ia tidak melibatkan carian teks.
Penyelesaian Alternatif
Jika FTS bukan pilihan yang berdaya maju, penyelesaian alternatif ialah membahagikan lajur kepada berbilang lajur ternormal, setiap satu mewakili sebahagian daripada rentetan. Pendekatan ini membolehkan penggunaan indeks yang cekap untuk awalan istilah carian. Walau bagaimanapun, ia memerlukan pengubahsuaian skema dan boleh meningkatkan kerumitan struktur pangkalan data.
Kesimpulan
Mengoptimumkan pertanyaan LIKE dengan berbilang lajur dalam MySQL boleh menjadi mencabar. Walaupun indeks secara amnya berguna, ia tidak berkesan untuk corak SUKA '%text%'. Carian Teks Penuh ialah penyelesaian berkuasa yang menyediakan carian pantas dan cekap untuk medan teks, walaupun untuk pertanyaan dengan kad bebas utama dan mengekori. Alternatif, seperti penormalan lajur, juga boleh dipertimbangkan, tetapi ia datang dengan pertukaran mereka sendiri.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan MySQL LIKE Pertanyaan Merentasi Berbilang Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!