OR UPPER(lu.opis) LIKE UPPER('%SomeName%')
tiene 3 problemas de rendimiento:
ORestá mal optimizado. Esencialmente, la tabla debe escanearse para verificar todas las filas. Es poco probable que los índices ayuden.UPPER(indexed-column)evita el uso de un índice en esa columna. Esto se soluciona fácilmente declarando que la columna tiene unCOLLATIONeso es "insensible a mayúsculas y minúsculas", es decir, algo comoutf8_unicode_ci; tenga en cuenta el_ci.LIKE '%...no puede usar un índice debido a la principal comodín.
Además, suele ser una tontería tener
32497 row(s) returned
¿Qué vas a hacer con tantas filas? El tiempo de transferencia de la red será significativo, incluso si la consulta en sí no lo es.
Para "resolver" el LIKE , OR y UPPER problemas todos a la vez, recopile el texto en una sola columna en una sola tabla. Luego proporcione un FULLTEXT índice en esa columna. El, MATCH ... AGAINST ... se ejecutará mucho más rápido, al menos para hacer SomeName búsqueda. (Los LEFT JOINs son otro asunto.)