Perbarui
Mulai MySQL 5.6
dan kemudian, InnoDB
tabel mendukung Match... Against
.
Yang pertama adalah banyak lebih baik. Di MyISAM tabel itu akan menggunakan indeks teks lengkap terhadap kolom-kolom itu. Yang lain akan melakukan pemindaian tabel penuh melakukan concat pada setiap baris dan kemudian perbandingan.
LIKE
hanya efisien jika Anda melakukannya terhadap:
- kolom (bukan hasil dari suatu fungsi kecuali vendor database Anda mendukung indeks fungsional--Oracle, misalnya--dan Anda menggunakannya);
- awal kolom (yaitu
LIKE 'blah%'
sebagai lawan dariLIKE '%blah%'
); dan - kolom yang diindeks.
Jika salah satu dari kondisi tersebut tidak benar, satu-satunya cara bagi mesin SQL untuk mengeksekusi kueri adalah dengan melakukan pemindaian tabel penuh. Ini dapat digunakan di bawah sekitar 10-20 ribu baris. Di luar itu dengan cepat menjadi tidak dapat digunakan.
Catatan: Satu masalah dengan MATCH di MySQL adalah sepertinya hanya cocok dengan seluruh kata sehingga pencarian untuk 'bla' tidak akan cocok dengan kolom dengan nilai 'blah', tetapi pencarian untuk 'bla*' akan cocok.