NOT IN ( SELECT ... )
è molto poco ottimizzato, specialmente nelle versioni precedenti.
Cambia in questo:
SELECT abc.*
FROM abc
LEFT JOIN zyx ON zyx.abc_id = abc.id
WHERE zyx.abc_id IS NULL;
AND zyx.id = 12345 ;
Per zyx, avere INDEX(id, abc_id)
o INDEX(abc_id, id)
Se zyx.id
è la PRIMARY KEY
, la tua query non ha molto senso:perché testare una singola riga (12345)?