NOT IN ( SELECT ... )
jest bardzo słabo zoptymalizowany, szczególnie w starszych wersjach.
Zmień na to:
SELECT abc.*
FROM abc
LEFT JOIN zyx ON zyx.abc_id = abc.id
WHERE zyx.abc_id IS NULL;
AND zyx.id = 12345 ;
W przypadku zyx użyj INDEX(id, abc_id)
lub INDEX(abc_id, id)
Jeśli zyx.id
to PRIMARY KEY
, Twoje zapytanie nie ma większego sensu — po co testować pojedynczy wiersz (12345)?