Jika Anda membutuhkan fitur pencarian yang canggih, gunakan solusi pencarian teks lengkap.
Di MySQL, indeks pencarian teks lengkap bawaan fitur hanya berfungsi di mesin penyimpanan MyISAM. Ini sangat disayangkan, karena InnoDB adalah mesin penyimpanan yang lebih disukai untuk semua tabel MySQL. InnoDB dalam versi MySQL terbaru lebih cepat daripada MyISAM dalam banyak kasus, dan memiliki fitur pemulihan kerusakan yang lebih baik daripada MyISAM.
Ada pernyataan dari tim pengembang MySQL bahwa mereka bermaksud untuk mengimplementasikan indeks teks lengkap untuk InnoDB. Namun, kami membutuhkan waktu berbulan-bulan atau bahkan bertahun-tahun lagi untuk menyediakannya, dan tentunya akan memerlukan peningkatan ke versi MySQL yang lebih baru.
Jika Anda harus menggunakan indeks teks lengkap MyISAM, sebaiknya simpan data Anda terutama di InnoDB, lalu simpan salinan teks yang dapat dicari dalam tabel MyISAM.
Anda juga dapat menggunakan solusi eksternal seperti Sphinx Search atau Apache Solr untuk menyediakan kemampuan pencarian teks lengkap secara eksternal ke database. Bahkan ada cara untuk menggunakan indeks Pencarian Sphinx melalui antarmuka mesin penyimpanan yang dapat dipasang di MySQL .
Saya tidak suka menggunakan LIKE
dengan wildcard atau REGEXP
untuk pencarian teks lengkap. Solusi ini memerlukan pemindaian tabel lengkap untuk setiap penelusuran, dan bergantung pada volume data Anda, berjalan ratusan atau ribuan kali lebih lambat daripada jika Anda memiliki indeks.
Saya menulis perbandingan solusi pencarian teks lengkap untuk MySQL dalam presentasi saya, "Pencarian Teks Lengkap Praktis di MySQL ," dan juga dalam bab buku saya SQL Antipatterns:Menghindari Perangkap Pemrograman Basis Data .
pembaruan:MySQL 5.6 saat ini dalam pengembangan (per Feb 2012), dan mengimplementasikan solusi indeks teks lengkap untuk InnoDB.