Salve a tutti,
da un po' di tempo ho un dubbio che non mi sono riuscito a chiarire.
Per spiegare riporto un esempio nel quale effettuo un join tra due tabelle e con una condizione:
tab_1(cd, descrizione, volume);
tab_2(cd, descrizione, peso);
QUERY 1:
select tab_1.cd,
tab_1.descrizione,
tab_1.volume,
tab_2.peso
from tab_1 left outer join tab_2
on tab_1.cd=tab_2.cd
where tab_1.cd > 10;
QUERY 2:
select tab_1.cd,
tab_1.descrizione,
tab_1.volume,
tab_2.peso
from tab_1 left outer join tab_2
on tab_1.cd=tab_2.cd AND tab_1.cd > 10;
Ora i risultati delle due query saranno uguali, ma mi domando:
la seconda dovrebbere essere eseguita più velocemente oppure il dmbs (e.g. mysql) si preoccupa di ottimizzare la prima?
Perché a rigor di logica nella prima, viene effettuato il join POI vengono selezionate solamente quelle con cd >10, mentre nella seconda viene fatto il join solamente con le tuple che hanno cd>10 (a meno che non interferisca il dbms).
Grazie a tutti (ma soprattutto a chi mi svelerà il mistero).