Большинство запросов предложения Oracle IN содержат ряд литеральных значений, и когда таблица присутствует, стандартное объединение лучше.В большинстве случаев оптимизатор Oracle на основе затрат создаст идентичный план выполнения для IN против EXISTS, поэтому нет никакой разницы в производительности запросов.
Ключевое слово Exists оценивает true или false, но ключевое слово IN будет сравнивать всезначения в соответствующем столбце подзапроса.Если вы используете оператор IN, механизм SQL будет сканировать все записи, извлеченные из внутреннего запроса.С другой стороны, если мы используем EXISTS, движок SQL остановит процесс сканирования, как только найдет совпадение.
Подзапрос EXISTS используется, когда мы хотим отобразить все строки, в которых есть совпадающиестолбец в обеих таблицах.В большинстве случаев этот тип подзапроса может быть переписан со стандартным объединением для повышения производительности.
Предложение EXISTS намного быстрее, чем IN, когда результаты подзапроса очень велики.И наоборот, предложение IN быстрее, чем EXISTS, когда результаты подзапроса очень малы.
Кроме того, предложение IN не может сравнивать что-либо со значениями NULL, но предложение EXISTS может сравнивать все с NULL.