sql >> Databáze >  >> RDS >> Mysql

Ignorují velmi malé tabulky MySQL indexy?

NOT IN ( SELECT ... ) je velmi špatně optimalizován, zejména ve starších verzích.

Změňte na toto:

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

Pro zyx použijte buď INDEX(id, abc_id) nebo INDEX(abc_id, id)

Pokud zyx.id je PRIMARY KEY , váš dotaz nedává moc smysl -- proč testovat pro jeden řádek (12345)?




  1. Mysql localhost !=127.0.0.1?

  2. Chyba PHP:Bylo dosaženo maximální úrovně vnoření funkcí '100', přeruší se

  3. Cizí klíče musí být index v mySQL?

  4. 6 problémových dotazů, které masivně zpomalují vaši databázi