Sì, poiché l'uso di DISTINCT (a volte in base a un commento) farà sì che risultati vengano ordinati L'ordinamento di centinaia di record richiede tempo. Prova GROUP BY tutte le tue colonne, a volte può portare l'ottimizzatore di query a scegliere un algoritmo più efficiente (almeno con Oracle ho notato un aumento significativo delle prestazioni).
È sbagliato usare distinti?
Beh, l'uso improprio di "distinto" non solo nasconde il vero problema (voci duplicate nelle tabelle, mancanza di condizione nella clausola on) come discusso sopra, ma anche degrada le prestazioni della query… Questo farà aumentare significativamente il costo IO (letture logiche) della query.
Distinta rende la query più lenta?
Pochissime query possono essere eseguite più velocemente in modalità SELECT DISTINCT, e pochissime eseguiranno più lentamente (ma non significativamente più lente) in modalità SELECT DISTINCT ma per il caso successivo è probabile che l'applicazione potrebbe dover esaminare i casi duplicati, il che sposta l'onere delle prestazioni e della complessità sull'applicazione.
È meglio usare distinto o GROUP BY?
In MySQL, DISTINCT sembra un po' più veloce di GROUP BY se il campo non è indicizzato. DISTINCT elimina solo le righe duplicate ma GROUP BY sembra ordinarle in aggiunta.
Perché non dovremmo usare distinti in SQL?
Se select distinto è lì per 'risolvere' un problema, è probabile che tu ottenga in cambio una cattiva performance. GROUP BY consente di utilizzare funzioni aggregate, come AVG, MAX, MIN, SUM e COUNT. DISTINCT rimuove solo i duplicati.