Utilisez EXISTS plutôt que DISTINCT
Vous pouvez supprimer l'affichage des lignes en double à l'aide de DISTINCT ; vous utilisez EXISTS pour vérifier l'existence de lignes renvoyées par une sous-requête. Dans la mesure du possible, vous devez utiliser EXISTS plutôt que DISTINCT car DISTINCT trie les lignes récupérées avant de supprimer les lignes en double.
dans votre cas, il y aurait beaucoup de données en double, donc l'existence devrait être plus rapide.
par http://my.safaribooksonline.com/ livre/-/9780072229813/high-performance-sql-tuning/ch16lev1sec10