Sono essenzialmente equivalenti tra loro (infatti è così che alcuni database implementano DISTINCT
sotto il cofano).
Se uno di questi è più veloce, sarà DISTINCT
. Questo perché, sebbene i due siano gli stessi, un Query Optimizer dovrebbe rilevare il fatto che il tuo GROUP BY
non sta approfittando dei membri del gruppo, ma solo delle loro chiavi. DISTINCT
lo rende esplicito, così puoi cavartela con un ottimizzatore leggermente più stupido.
Nel dubbio, prova!