Dalam pertanyaan pangkalan data, seseorang menghadapi dilema memilih pertanyaan optimum untuk carian baris berdasarkan kata kunci tertentu dalam berbilang lajur. Soalan ini membandingkan dua pendekatan:
Pertanyaan ini menggunakan pengindeksan teks penuh untuk mencari dokumen yang mengandungi kata kunci "foo" dan "bar" dalam lajur yang ditentukan "foo_desc" dan "bar_desc." Dalam MySQL versi 5.6 dan lebih baru, MATCH AGAINST disokong untuk jadual InnoDB.
Pertanyaan ini menggabungkan nilai daripada dua lajur dan menggunakan LIKE untuk melaksanakan carian subrentetan untuk "foo" dan "bar" dalam hasil carian rentetan.
MACHAINST mempamerkan prestasi unggul pada jadual MyISAM, memanfaatkan indeks teks penuh untuk mencari kata kunci dengan cekap. Sebaliknya, LIKE melakukan imbasan jadual penuh, mencari setiap baris untuk kata kunci, yang boleh memakan masa untuk set data yang besar.
LIKE hanya berkesan jika digunakan pada lajur secara langsung (bukan hasil fungsi), jika corak carian sepadan dengan permulaan lajur dan jika lajur adalah diindeks. Jika tidak, ia lalai kepada imbasan jadual penuh, menjadi tidak praktikal untuk set data yang besar.
Satu had MATCH AGAINST dalam MySQL ialah ia hanya sepadan dengan perkataan keseluruhan. Oleh itu, carian untuk "bla" tidak akan sepadan dengan lajur yang mengandungi "blah," tetapi carian untuk "bla*" akan menemuinya.
Berdasarkan pertimbangan prestasi dan batasan LIKE, MATCH AGAINST ialah pilihan pilihan untuk mencari set data yang besar untuk kata kunci dalam berbilang lajur. Ia memanfaatkan kecekapan pengindeksan teks penuh untuk menyampaikan hasil yang pantas dan tepat.
Atas ialah kandungan terperinci PADAN LAWAN atau SUKA: Manakah yang Lebih Baik untuk Carian Kata Kunci Berbilang Lajur dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!