Salut,

Nu am lucrat cu Postgres, da' ma descurc un pic cu SQL, asa ca hai sa vedem=
 daca ajungem undeva.

In primul rand, left-join (AFAIK) este intr-adevar mai costisitor=20
decat un "join obisnuit". Un left-join se foloseste atunci cand vrei
sa incluzi inregistrari din tabla din "stanga" chiar daca nu au=20
corespondent in tabela din "dreapta".

In al doilea rand, clauzele de join poti sa le pui si in clauza=20
WHERE, de exemplu:

SELECT A.camp1, A.camp2, B.campx, i1.nume, i2.nume
FROM A, B, i1, i2
WHERE A.a&b=3DB.a&b AND A.a&i1=3Di1.a&i1 AND A.a&i2=3Di2.a&i2 AND
<ceva clauze de filtrare>
ORDER BY <ceva>

Acuma nu stiu cat de bine face Postgres otimizarea la interogarea=20
asta. Insa am auzit ca e un soft destept, deci ar trebui sa se=20
descurce.=20

Ca regula generala, asigura-te ca ai definit relatiile intre tabele
si ca ai definiti indecsi pe coloanele folosite in join.=20

Tot ca regula generala, cu cat pui mai multe conditii de filtrare
in WHERE, cu atat mai bine, pentru ca alea se aplica primele si
deci raman mai putine join-uri de facut. In principiu nu ar trebui=20
sa conteze ordinea in care scrii tu conditiile in SQL, e treaba
optimizatorului sa determine care e ordinea cea mai avantajoasa in
care tre' sa le aplice.

Postgres are ceva de=20genul "statistici despre tabele"=3F Unele RDBMS
au asa ceva (Informix era tare la asta) si, daca datele statistice=20
sunt up-to-date, atunci optimizatorul ia decizii mai bune in functie
de datele efective pe care le ai stocate.

Sper sa te ajute.

Sebastian
---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to 
unsubscribe from this list.

Raspunde prin e-mail lui