On 2 mysql tabelit:
clients (id,name,...) client_stuff (id,client_id,name,...)
Nüüd oleks vaja kätte saada kirjed tabelist clients millel pole client_stuff tabelis ühtki kirjet.
|
0
|
On 2 mysql tabelit: clients (id,name,...) client_stuff (id,client_id,name,...) Nüüd oleks vaja kätte saada kirjed tabelist clients millel pole client_stuff tabelis ühtki kirjet. |
||
|
|
|
2
|
Potentsiaalselt efektiivsem võib olla see:
Kui client_stuff tabelis võib kliendi kohta olla mitu kirjet, siis tuleks select asemel kasutada select distinct. Väikeste kirjete arvude puhul on join ja not exists samaväärsed, mõlemad on sisuliselt nested loop. Suurema arvu kirjete puhul pakub aga join optimiseerijale rohkem võimalusi, nt hash join või merge join. Distinct toob muidugi sisse täiendava sorteerimisetapi, mis võib selle eelise nullida. |
||
|
|
|
1
|
Ma ei tea, kas sain täpselt sinu küsimusest aru select c.* from clients c where not exists(select c1.* from client_stuff c1 where c1.client_id=c.id) |
|||
|