Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Powolne wyszukiwanie według zapytania indeksu LIKE% MYSQL

OR słowo kluczowe doprowadza optymalizatora MySQL do szaleństwa.

Możesz spróbować czegoś takiego.

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%'

Możesz też rozważyć wyszukiwanie PEŁNOTEKSTOWE. Wymaga MyISAM lub wersji MySQL 5.6 lub nowszej.

EDYTUJ *Trudno dokładnie określić, co się dzieje z tymi optymalizacjami. Czy możesz tego spróbować? Spowoduje to sprawdzenie, czy wybór języka Cię nie faszeruje.

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

Czy możesz tego spróbować?

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%'

Nie da to idealnego wyniku — będzie zawierało zduplikowane elementy nazw — ale pominie DISTINCT krok deduplikacji w zapytaniu.

Możesz również spróbować tego.

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. Kod Django lub wyzwalacze MySQL

  2. Zrzuć plik sql do ClearDB w Heroku

  3. Przechowywanie dat innych niż gregoriańskie w typie daty Mysql

  4. Jak mogę cofnąć instrukcję mysql, którą właśnie wykonałem?

  5. Jak zaimportować dane z pliku tekstowego do bazy mysql