OR UPPER(lu.opis) LIKE UPPER('%SomeName%')
har 3 prestandaproblem:
ORär dåligt optimerad. I huvudsak måste tabellen skannas för att kontrollera alla rader. Index kommer sannolikt inte att hjälpa.UPPER(indexed-column)förhindrar att ett index används i den kolumnen. Detta är lätt att komma runt att förklara att kolumnen har enCOLLATIONsom är "skiftlägesokänslig" -- det vill säga något somutf8_unicode_ci; notera_ci.LIKE '%...kan inte använda ett index på grund av ledande jokertecken.
Dessutom brukar det vara dumt att ha
32497 row(s) returned
Vad ska du göra med så många rader? Nätverksöverföringstiden kommer att vara betydande, även om själva frågan inte är det.
För att "lösa" LIKE , OR och UPPER problem på en gång, samla ihop texten till en enda kolumn i en enda tabell. Ange sedan en FULLTEXT index på den kolumnen. Den, MATCH ... AGAINST ... kommer att köras mycket snabbare -- åtminstone för att göra SomeName Sök. (LEFT JOINs är en annan sak.)