Zasadniczo są one sobie równoważne (w rzeczywistości tak niektóre bazy danych implementują DISTINCT
pod maską).
Jeśli jeden z nich jest szybszy, będzie DISTINCT
. Dzieje się tak dlatego, że chociaż oba są takie same, optymalizator zapytań musiałby wychwycić fakt, że GROUP BY
nie wykorzystuje żadnych członków grupy, tylko ich klucze. DISTINCT
wyraźnie to wyjaśnia, więc możesz uciec z nieco głupszym optymalizatorem.
W razie wątpliwości przetestuj!