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