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

Czy bardzo małe tabele MySQL ignorują indeksy?

NOT IN ( SELECT ... ) jest bardzo słabo zoptymalizowany, szczególnie w starszych wersjach.

Zmień na to:

SELECT  abc.*
    FROM  abc
    LEFT JOIN  zyx  ON zyx.abc_id = abc.id
    WHERE  zyx.abc_id IS NULL;
AND  zyx.id = 12345 ;

W przypadku zyx użyj INDEX(id, abc_id) lub INDEX(abc_id, id)

Jeśli zyx.id to PRIMARY KEY , Twoje zapytanie nie ma większego sensu — po co testować pojedynczy wiersz (12345)?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najczęstsze zapytania dotyczące MySQL

  2. błąd wyszukiwania pełnego tekstu mysql

  3. Dynamiczne nazwy tabel w funkcji procedury składowanej

  4. Skrypt MySQL z parametrami

  5. WYBIERZ wszystkie rekordy sprzed 30 dni