Interogările bazei de date preiau informații specifice din baza de date.
O subinterogare este o interogare în cadrul unei alte interogări. O subinterogare poate conține și o altă subinterogare. Se spune că acestea sunt subinterogări „imbricate”. O îmbinare este atunci când două sau mai multe tabele sunt referite în clauza „De la” a interogării. Diferitele motoare de baze de date pot optimiza subinterogări și alăturari în mod diferit. De exemplu, optimizatorul DB2 va transforma o subinterogare într-o alăturare dacă sunt îndeplinite anumite criterii. În unele cazuri, o alăturare oferă performanțe mai bune decât o subinterogare.
Ce face o subinterogare
O subinterogare este o instrucțiune „SELECT” din clauza „WHERE” sau „HAVING” a unei instrucțiuni exterioare „INSERT”, „UPDATE”, „MERGE” sau „DELETE”. Subinterogarea mai este numită „interogare interioară” sau „selectare interioară”. Subinterogarea poate avea o clauză „FROM” cu unul sau mai multe tabele și poate avea opțional o clauză „WHERE”, „GROUP BY” sau „HAVING”. Este întotdeauna cuprins între paranteze.
Videoclipul zilei
Avantajele și dezavantajele subinterogărilor
Subinterogările sunt avantajoase deoarece structurează interogarea pentru a izola fiecare parte a declarației, efectuează aceeași operațiune care ar necesita în mod obișnuit îmbinări și îmbinări complexe și sunt mai ușor de realizat citit. Subinterogările au stat chiar la baza numelui „Structured Query Language” (SQL) datorită structurii lor ușor de citit. Un dezavantaj este că nu puteți modifica un tabel și nu puteți selecta din același tabel într-o subinterogare în aceeași instrucțiune SQL. De asemenea, executarea subinterogărilor poate dura mai mult decât o unire din cauza modului în care le procesează optimizatorul bazei de date.
Ce face o alăturare
Cele mai multe subinterogări pot fi rescrise ca alinări, iar cele mai multe alinări pot fi rescrise ca subinterogări. O îmbinare definește două sau mai multe tabele printr-o coloană asociată. Tabelele sunt de obicei unite pe chei primare și străine. De exemplu, un tabel de angajați poate avea o cheie primară a unei coloane ID de angajat, în timp ce un tabel de pontaj are și o coloană ID de angajat care este o cheie străină pentru tabelul de angajat. Unirea SQL poate fi scrisă ca „WHERE employee.empid = timesheet.empid” sau „FROM employee JOIN timesheet ON (employee.empid = timesheet.empid).”
Avantajele și dezavantajele Joinurilor
Principalul avantaj al unui join este că se execută mai rapid. Este posibil ca creșterea performanței să nu fie observabilă de către utilizatorul final. Cu toate acestea, deoarece coloanele sunt denumite și indexate și optimizate în mod specific de către motorul bazei de date, timpul de recuperare va fi aproape întotdeauna mai rapid decât cel al unei subinterogări. Există, de asemenea, îmbinări interioare și exterioare, îmbinări stânga și dreaptă, îmbinări complete și îmbinări încrucișate. Un dezavantaj al utilizării îmbinărilor este că nu sunt la fel de ușor de citit ca subinterogările. Un alt dezavantaj este că poate fi confuz cu privire la care îmbinare este tipul adecvat de îmbinare de utilizat pentru a produce setul de rezultate corect dorit.