Яка різниця між Subselects і Exists Subselect?
Ключове слово Exists оцінює true або false, але ключове слово IN порівнює всі значення у відповідному стовпці підзапиту.24 серпня 2008 р
Основна відмінність між ними полягає в тому IN вибирає список відповідних значень, тоді як EXISTS повертає логічне значення TRUE або FALSE.
Підзапит — це оператор SELECT. Умова EXISTS буде виконана, і вона поверне TRUE, якщо підзапит повертає принаймні один запис у наборі результатів, інакше умова EXISTS не буде виконано, і вона поверне FALSE.
Речення «IN» є кращим, якщо існує невеликий список статичних значень або внутрішній запит повертає дуже меншу кількість рядків. Речення “EXISTS” є кращим, коли потрібно перевірити наявність значень в іншій таблиці або коли потрібно перевірити більше ніж один стовпець.
Оператор EXISTS використовується для перевірки наявності будь-якого запису в підзапиті. Якщо підзапит повертає принаймні один запис, умова EXISTS вірна; якщо підзапит не повертає жодних записів, умова EXISTS є помилковою. Оператор NOT EXISTS є повною протилежністю.
Речення EXISTS набагато швидше, ніж IN, коли результати підзапиту дуже великі. І навпаки, речення IN працює швидше, ніж EXISTS, коли результати підзапиту дуже малі. Крім того, пропозиція IN не може порівнювати нічого зі значеннями NULL, але пропозиція EXISTS може порівнювати все з значеннями NULL.