ma la mia non andava bene?![]()
optime!
Rispetto alla IN la EXISTS dovrebbe fonzionare meglio se la sub query messa in IN estrae molti valori.
Molti valori non sono 5 o 10 o 100 ma dalle decine di migliaia in su altrimenti non te ne accorgi nemmeno.
Ovviamente la formulazione in join dovrebbere essere molto più efficiente.
Io ho presentato una ulteriore alternativa, il bello dell'SQL è che si può arrivare in modi differenti allo stesso risultato. L'importante è conoscere le alternative per poterlo sfruttare di caso in caso a seconda delle esigenze. Spero che concordiate su questo.
Faccio notare che nella formualazione con la JOIN è stata utilizzata nella subquery la UNION ALL mentre dovresti nel tuo caso usare UNION perché UNION ALL mantiene le eventuali righe duplicate con l'effetto che andando in JOIN ti si duplicherebbero anche le righe del risultato se hai UID uguali presenti tra PIPPO,PLUTO e PAPERINO.
Se ti stai approcciando all'argomento database dai uno sguardo anche a: SQL, database relazionale, regole di Codd, modello E-R, forme normali, normalizzazione con il mio testo: Semplicemente Database
per dovere di completezza qui potete in modo chiaro capire la differenza tra IN e EXISTS in termini di opportunità di utilizzo.
Come leggerete la exists diventa molto meglio performante quando la sub query è pasante (come si diceva sopra).
http://asktom.oracle.com/pls/asktom/...D:953229842074
Se ti stai approcciando all'argomento database dai uno sguardo anche a: SQL, database relazionale, regole di Codd, modello E-R, forme normali, normalizzazione con il mio testo: Semplicemente Database