Поиск записей в таблице, которым нет соответствия в другой
Если ваша СУБД не умеет выполнять вложенные запросы (например, MySQL версий ниже 4.1), то вариант такой:
Для СУБД, умеющих выполнять подзапросы, есть еще два варианта: с использованием конструкции NOT IN
и с использованием NOT EXISTS
.
Вариант с NOT IN
всегда быстрее варианта с NOT EXIST
в случаях, когда число записей в таблице table1 больше числа записей в таблице table2.
Если известно, что table1 имеет больше записей, чем table2, то NOT IN
будет выполняться быстрее только на таблицах с небольшим числом записей (до сотен тысяч записей), а на больши́х объемах выигрывает NOT EXIST
. Причем, чем больше записей в таблице table2 тем существеннее разница в скорости выполнения. Но только при наличии индекса по полю id.
Last updated