Esempio.
Relazione cliente (ssnum, nome, codice postale, indirizzo) PK (ssnum). ssnum è il numero di previdenza sociale.
SQL:
Select DISTINCT ssnum from customer where zipcode=1234 group by name
Questa istruzione SQL restituisce record univoci per quei clienti che hanno del codice postale 1234. A alla fine i risultati sono raggruppati in base al nome.
Qui DISTINCT non è necessario. perché stai selezionando ssnum che è già unico perché ssnun è la chiave primaria. due persone non possono avere lo stesso ssnum.
In questo caso, Select ssnum from customer where zipcode=1234 group by name
offrirà prestazioni migliori di "... DISTINCT .......".
DISTINCT è un'operazione costosa in un DBMS.
fonte
2012-06-03 06:49:45
Queste due domande non sono le stesse, vero? Nel secondo si selezionano solo ID distinti, non nomi distinti. – DisgruntledGoat
Questo non funzionerà con nessun altro T-SQL, o non sarà più veloce con nessun altro? –
Beh, il secondo non funziona !!! Qualsiasi colonna non inclusa nella clausola GROUP BY richiede una funzione di aggregazione. –