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)?