Разлике између оператора ЕКСИСТС и ИН у СКЛ-у

Аутор: Peter Berry
Датум Стварања: 12 Август 2021
Ажурирати Датум: 18 Јуни 2024
Anonim
What is a Server?  Servers vs Desktops Explained
Видео: What is a Server? Servers vs Desktops Explained

Садржај

Константан изазов у ​​коришћењу СКЛ-а је одређивање исправног коришћења ЕКСИСТС и ИН оператора. Два оператера могу дати исте резултате, али не увијек. Поред тога, постоји значајна дебата о томе како је сваки оператер оптимизован за брзину. Корисници треба да разумеју различите атрибуте сваког оператера и да експериментишу са њима да би одредили одговарајућу употребу.


Размотрите своје СКЛ циљеве приликом избора ЕКСИСТС или ИН (Јупитеримагес / Пхотос.цом / Гетти Имагес)

ИН оператор

Оператор ИН враћа ред ако вредност поља табеле задовољава услов ВХЕРЕ у листи ИН вредности. Обично се користи као део главног упита или у вези са подупртом.

Пример 1: ВХЕРЕ табле.фиелд ИН ('а', 'б', 'ц') Пример 2: ВХЕРЕ табле.фиелд ИН (подупрт који враћа скуп)

ЕКСИСТС оператор

Оператор ЕКСИСТС враћа све главне редове ако подупрт садржи било које редове. Користи се само у вези са подупртом. Врати се редови које одређује филтер у главном упиту.

Пример: ВХЕРЕ ЕКСИСТС (подупрт који враћа скуп)

Дифференце

Оператор ИН не може да процени НУЛЛ вредности, тако да ће такве линије увек бити лажне и неће бити враћене, за разлику од оператора ЕКСИСТС, који процењује и враћа линије са НУЛЛ вредностима.


Сличности

И ЕКСИСТС и ИН подржавају корелиране и некорелиране подупите, а оба могу дати сличне резултате. Када се корелирају, они задовољавају главно поље упита за поље подупита (нпр: принципал.ид = субкуери.ид). Подупит вреднује ред по ред за сваки пронађени догађај. У овом случају, ИН и ЕКСИСТС ће вратити исте линије на основу сличних "ид" услова. Када нису повезани, два оператора обрађују своје подупите и затим комбинују резултате за главни упит.

Перформансе

Перформансе се одређују оптимизатором базе података и планом извршавања који се користи за извршени код. За ЕКСИСТС и ИН, оптимизатор може одабрати различите путање. У Орацлеу, НОТ ЕКСИСТС је обично бржи од НОТ ИН. На крају, неки покушаји и грешке су потребни за сортирање најкраће стазе, у зависности од базе података и верзије која се користи. Обавезно прво користите оператера који гарантује исправне резултате, а затим покушајте да замените операторе да бисте видели који је најбржи.