После подготовки ответа на этот вопрос я обнаружил, что не могу подтвердить свой ответ.
В моем первом задании программирования мне сказали, что запрос в предикате IN () выполняется для каждой строки, содержащейся в родительском запросе, и поэтому следует избегать использования IN.
Например, с учетом запроса:
SELECT count(*) FROM Table1 WHERE Table1Id NOT IN (
SELECT Table1Id FROM Table2 WHERE id_user = 1)
Table1 Rows | # of "IN" executions
----------------------------------
10 | 10
100 | 100
1000 | 1000
10000 | 10000
Это правильно? Как работает предикат IN?