OR UPPER(lu.opis) LIKE UPPER('%SomeName%')
memiliki 3 masalah kinerja:
OR
kurang dioptimalkan. Pada dasarnya, tabel harus dipindai untuk memeriksa semua baris. Indeks tidak mungkin membantu.UPPER(indexed-column)
mencegah menggunakan indeks pada kolom itu. Ini mudah diselesaikan dengan mendeklarasikan kolom itu memilikiCOLLATION
itu "tidak peka huruf besar-kecil" -- yaitu, sesuatu sepertiutf8_unicode_ci
; perhatikan_ci
.LIKE '%...
tidak dapat menggunakan indeks karena terkemuka karakter pengganti.
Selain itu, biasanya bodoh untuk memiliki
32497 row(s) returned
Apa yang akan Anda lakukan dengan banyak baris itu? Waktu transfer jaringan akan signifikan, meskipun kueri itu sendiri tidak.
Untuk "menyelesaikan" LIKE
, OR
, dan UPPER
masalah sekaligus, kumpulkan teks menjadi satu kolom dalam satu tabel. Kemudian berikan FULLTEXT
indeks pada kolom tersebut. MATCH ... AGAINST ...
akan berjalan jauh lebih cepat -- setidaknya untuk melakukan SomeName
Cari. (LEFT JOINs
adalah masalah lain.)