Masalah dengan jenis pencarian '%keyword%' adalah tidak ada cara untuk mencarinya secara efisien di tabel biasa, bahkan jika Anda membuat indeks pada kolom itu. Pikirkan tentang bagaimana Anda akan melihat string itu di buku telepon. Sebenarnya tidak ada cara untuk mengoptimalkannya - Anda harus memindai seluruh buku telepon - dan itulah yang dilakukan MySQL, pemindaian tabel penuh.
Jika Anda mengubah pencarian itu menjadi 'keyword%' dan menggunakan indeks, Anda bisa mendapatkan pencarian yang sangat cepat. Namun, sepertinya ini bukan yang Anda inginkan.
Jadi dengan mengingat hal itu, saya telah menggunakan pengindeksan/pencarian teks lengkap sedikit, dan berikut adalah beberapa pro dan kontra:
Pro
- Sangat cepat
- Mengembalikan hasil yang diurutkan berdasarkan relevansi (secara default, meskipun Anda dapat menggunakan pengurutan apa pun)
- Kata henti dapat digunakan.
Kontra
- Hanya bekerja dengan tabel MyISAM
- Kata-kata yang terlalu pendek diabaikan (default minimum 4 huruf)
- Memerlukan SQL yang berbeda dalam klausa where, jadi Anda perlu mengubah kueri yang ada.
- Tidak cocok dengan sebagian string (misalnya, 'kata' tidak cocok dengan 'kata kunci', hanya 'kata')
Berikut ini beberapa dokumentasi bagus tentang penelusuran teks lengkap .
Pilihan lainnya adalah menggunakan sistem pencarian seperti Sphinx . Ini bisa sangat cepat dan fleksibel. Ini dioptimalkan untuk pencarian dan terintegrasi dengan baik dengan MySQL.