Użyj EXISTS zamiast DISTINCT
Możesz wyłączyć wyświetlanie zduplikowanych wierszy za pomocą DISTINCT; używasz EXISTS do sprawdzenia istnienia wierszy zwróconych przez podzapytanie. Jeśli to możliwe, należy używać opcji EXISTS zamiast DISTINCT, ponieważ DISTINCT sortuje pobrane wiersze przed pominięciem zduplikowanych wierszy.
w twoim przypadku byłoby wiele zduplikowanych danych, więc ich istnienie powinno być szybsze.
autor:http://my.safaribooksonline.com/ book/-/9780072229813/high-performance-sql-tuning/ch16lev1sec10