sql >> Databasteknik >  >> RDS >> Mysql

Ignorerar mycket små MySQL-tabeller index?

NOT IN ( SELECT ... ) är mycket dåligt optimerad, särskilt i äldre versioner.

Ändra till detta:

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

För zyx, ha antingen INDEX(id, abc_id) eller INDEX(abc_id, id)

Om zyx.id är PRIMARY KEY , din fråga ger inte så mycket mening -- varför testa för en enda rad (12345)?




  1. Ansluter till MySQL-databasen med min iOS-app

  2. Varför MySQL COUNT utan tabellnamn ger 1

  3. MySQL-avrundningsfunktioner

  4. Förhandsgranska och ladda upp bilder med PHP och MySQL-databas