Mysql
 sql >> база данни >  >> RDS >> Mysql

Бавно търсене по индексна заявка LIKE% MYSQL

OR ключова дума подлудява оптимизатора на MySQL.

Може да опитате нещо подобно.

SELECT name FROM table WHERE lang_index='en' AND name LIKE 'myname%'
UNION
SELECT name FROM table WHERE lang_index='en' AND enam LIKE 'myname%'

Или може да помислите за търсене в ПЪЛЕН ТЕКСТ. Изисква MyISAM или версия на MySQL 5.6 или по-нова.

РЕДАКТИРАНЕ *Трудно е да се знае какво точно се случва с тези неща за оптимизация. Можете ли да опитате това? Това ще види дали изборът на език не ви пречи.

 SELECT name 
   FROM table 
  WHERE (name LIKE 'myname%' OR enam LIKE 'myname%')

Можете ли да опитате това?

SELECT name FROM table WHERE lang_index='en' AND name LIKE 'myname%'
UNION ALL
SELECT name FROM table WHERE lang_index='en' AND enam LIKE 'myname%'

Няма да даде перфектен резултат – ще има дублиращи се елементи с имена – но ще пропусне DISTINCT стъпка за дедублиране във вашата заявка.

Може да опитате и това.

SELECT name 
  FROM table
 WHERE lang_index='en'
   AND id IN (
    SELECT id from table 
     WHERE (name LIKE 'myname%' OR enam LIKE 'myname%'))



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Примери за DAYOFWEEK() – MySQL

  2. Пребройте редовете в базата данни на mysql, където времевата марка в интервала X

  3. Как мога да копирам един ред/запис от един MySQL екземпляр в друг?

  4. Релси 3 - Нетърпеливо натоварване с условия

  5. 'max_user_connections' е зададен на 200 - все още получава грешка