OR UPPER(lu.opis) LIKE UPPER('%SomeName%')
има 3 проблема с производителността:
ORе лошо оптимизиран. По същество таблицата трябва да се сканира, за да се проверят всички редове. Индексите едва ли ще помогнат.UPPER(indexed-column)предотвратява използването на индекс в тази колона. Това лесно се заобикаля, като декларирате, че тази колона имаCOLLATIONкоето е „нечувствително към малки и главни букви“ -- тоест нещо катоutf8_unicode_ci; обърнете внимание на_ci.LIKE '%...не може да използва индекс поради водещия заместващ знак.
Освен това обикновено е глупаво да има
32497 row(s) returned
Какво ще правиш с толкова много редове? Времето за мрежов трансфер ще бъде значително, дори ако самата заявка не е.
За да "решите" LIKE , OR и UPPER проблеми наведнъж, съберете текста заедно в една колона в една таблица. След това предоставете FULLTEXT индекс на тази колона. The, MATCH ... AGAINST ... ще работи много по-бързо -- поне за извършване на SomeName Търсене. (LEFT JOINs са друг въпрос.)