Другой подход заключается в использовании коррелированного подзапроса с NOT EXISTS()
:
SELECT t1.id_xx
FROM table1 AS t1
WHERE NOT EXISTS (SELECT 1
FROM table2 AS t2
WHERE t2.id = ? -- your input id here
AND t2.id_xx = t1.id_xx)
Если у вас большие таблицы и вы беспокоитесь о производительности этих запросов, то вы может определить следующий индекс:
- Для коррелированного подзапроса определите составной индекс
(id, id_xx)
для table2
.
ALTER TABLE table2 ADD INDEX(id, id_xx);
Предполагаячто id_xx
уже является первичным ключом в таблице1. Таким образом, вам не нужно определять какой-либо индекс там. Если нет, то вы можете определить индекс по нему.