Mentre stavo controllando via VPN alcune query presso il server di un cliente un fulmine a ciel sereno mi ha illuminato la mente, riuscendo finalmente a portare a livello conscio quel "non-so-che" che dal termine del webcast mi girava in testa.
Oggi un partecipante al webcast mi ha chiesto (se non ricordo male..purtroppo il webcast non è ancora disponibile per il download) se è meglio usare la clausola NOT EXISTS oppure LEFT/RIGHT OUTER JOIN...WHERE...IS NULL per caprire quali sono le righe di una tabella che NON hanno riferimenti in un'altra.
Di botto gli ho subito risposto "è meglio l'OUTER JOIN"...peccato che per non so quale motivo io invece stessi pensando alla clausola NOT IN :-)
Credo che sia stato un lapsus (o raptus? :-)) dovuto al fatto in questi ultimi giorni ho messo le mani a un numerose query che usavano il NOT IN, e quindi ho risposto di botto ed in modo errato.
Per dipanare ogni dubbio quindi: la clausola NOT EXISTS va benone ed è molto performante, normalmente più che l'equivalente clausola che fa uso di un OUTER JOIN. Attenzione invece a trattare con i guanti la clausola NOT IN perchè è più problematica e nella maggior parte dei casi molto meno performante.
Mi scuso con tutti per il disguido. Purtroppo questo è il problema dei webcast....avendo davanti un monitor e non un pubblico in carne ed ossa è piuttosto difficile "vedere" i feeback in tempo reale...ad esempio facce stranite :-)...oggi poi che avevo problemi con la rete mentre parlavo stavo anche fancendo altre 36 cose :-)...beh spero cmq di aver chiarito qualsiasi eventual dubbio. Per ogni dubbio rimanente contattatemi!