OR UPPER(lu.opis) LIKE UPPER('%SomeName%')
memiliki 3 masalah kinerja:
ORkurang 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 memilikiCOLLATIONitu "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.)