После подготовки ответа на этот вопрос я обнаружил, что не могу подтвердить свой ответ.
В моем первом задании программирования мне сказали, что запрос в предикате 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
?