Mysql
 sql >> Base de données >  >> RDS >> Mysql

Les très petites tables MySQL ignorent-elles les index ?

NOT IN ( SELECT ... ) est très mal optimisé, surtout dans les anciennes versions.

Remplacez-le par :

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

Pour zyx, ayez soit INDEX(id, abc_id) ou INDEX(abc_id, id)

Si zyx.id est la PRIMARY KEY , votre requête n'a pas beaucoup de sens -- pourquoi tester une seule ligne (12345) ?