Скажите, у меня есть две таблицы ниже
------------------------------
| employee |
------------------------------
| employee_id | employee_name |
------------------------------
| 1 | one |
| 2 | two |
| 3 | three |
------------------------------
и
-------------------------------------------
| feedback |
-------------------------------------------
| employee_id (FK) | comments |
-------------------------------------------
| 2 | comment two |
-------------------------------------------
Каков наилучший (с точки зрения производительности) способ получения информации обо всех сотрудниках, у которых нет обратной связи?
Я думал о приведенном ниже SQL, но поскольку он использует подзапрос, я не уверен, насколько быстрым он будет, когда число записей в обеих таблицах увеличится.
SELECT * FROM employee WHERE employee_id NOT IN (SELECT employee_id FROM feedback)
База данных - Oracle, и все ключевые столбцы имеют индексы.
Обновление
Спасибо всем, хотелось бы принять более одного ответа! Это то, что я использовал в конце (структура моей таблицы была не такой простой, как показано здесь, поскольку у меня были объединения с несколькими другими таблицами).
SELECT
e.name, m.name, a.postcode
FROM
employee LEFT OUTER JOIN feedback f on (e.employee_id = f.employee_id),
address a, manager m
WHERE a.address_id = e.address_id
AND m.manager_id = e.manager_id
AND f.employee_id IS NULL