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