Садржај
Константан изазов у коришћењу СКЛ-а је одређивање исправног коришћења ЕКСИСТС и ИН оператора. Два оператера могу дати исте резултате, али не увијек. Поред тога, постоји значајна дебата о томе како је сваки оператер оптимизован за брзину. Корисници треба да разумеју различите атрибуте сваког оператера и да експериментишу са њима да би одредили одговарајућу употребу.
Размотрите своје СКЛ циљеве приликом избора ЕКСИСТС или ИН (Јупитеримагес / Пхотос.цом / Гетти Имагес)
ИН оператор
Оператор ИН враћа ред ако вредност поља табеле задовољава услов ВХЕРЕ у листи ИН вредности. Обично се користи као део главног упита или у вези са подупртом.
Пример 1: ВХЕРЕ табле.фиелд ИН ('а', 'б', 'ц') Пример 2: ВХЕРЕ табле.фиелд ИН (подупрт који враћа скуп)
ЕКСИСТС оператор
Оператор ЕКСИСТС враћа све главне редове ако подупрт садржи било које редове. Користи се само у вези са подупртом. Врати се редови које одређује филтер у главном упиту.
Пример: ВХЕРЕ ЕКСИСТС (подупрт који враћа скуп)
Дифференце
Оператор ИН не може да процени НУЛЛ вредности, тако да ће такве линије увек бити лажне и неће бити враћене, за разлику од оператора ЕКСИСТС, који процењује и враћа линије са НУЛЛ вредностима.
Сличности
И ЕКСИСТС и ИН подржавају корелиране и некорелиране подупите, а оба могу дати сличне резултате. Када се корелирају, они задовољавају главно поље упита за поље подупита (нпр: принципал.ид = субкуери.ид). Подупит вреднује ред по ред за сваки пронађени догађај. У овом случају, ИН и ЕКСИСТС ће вратити исте линије на основу сличних "ид" услова. Када нису повезани, два оператора обрађују своје подупите и затим комбинују резултате за главни упит.
Перформансе
Перформансе се одређују оптимизатором базе података и планом извршавања који се користи за извршени код. За ЕКСИСТС и ИН, оптимизатор може одабрати различите путање. У Орацлеу, НОТ ЕКСИСТС је обично бржи од НОТ ИН. На крају, неки покушаји и грешке су потребни за сортирање најкраће стазе, у зависности од базе података и верзије која се користи. Обавезно прво користите оператера који гарантује исправне резултате, а затим покушајте да замените операторе да бисте видели који је најбржи.