Dove sto lavorando Mi è stato recentemente detto che l'utilizzo distinto delle query è un brutto segno di un programmatore. Quindi mi chiedo, immagino, che l'unico modo per non utilizzare questa funzione è quello di utilizzare un gruppo entro il.Devo usare distinto nelle mie query
Era a mia conoscenza che la funzione distinta funzioni in modo molto simile a un gruppo tranne che in come è stata letta. Una funzione distinta controlla ogni singolo criterio di selezione rispetto a un gruppo con il quale fa la stessa cosa solo nel suo complesso.
Tenere presente che faccio solo segnalazione. Non creo/altero i dati. Quindi la mia domanda è per le migliori pratiche dovrei usare distinti o di gruppo. Se nessuna delle due esiste un'alternativa. Forse il gruppo dovrebbe essere usato in query più complesse del mio esempio non reale qui, ma tu hai l'idea. Non riuscivo a trovare una risposta che in realtà ha spiegato perché o perché non dovrei usare distinti nelle mie query
select distinct
spriden_user_id as "ID",
spriden_last_name as "last",
spriden_first_name as "first",
spriden_mi_name as "MI",
spraddr_street_line1 as "Street",
spraddr_street_line2 as "Street2",
spraddr_city as "city",
spraddr_stat_code as "State",
spraddr_zip as "zip"
from spriden, spraddr
where spriden_user_id = spraddr_id
and spraddr_mail_type = 'MA'
VS
select
spriden_user_id as "ID",
spriden_last_name as "last",
spriden_first_name as "first",
spriden_mi_name as "MI",
spraddr_street_line1 as "Street",
spraddr_street_line2 as "Street2",
spraddr_city as "city",
spraddr_stat_code as "State",
spraddr_zip as "zip"
from spriden, spraddr
where spriden_user_id = spraddr_id
and spraddr_mail_type = 'MA'
group by "ID","last","first","MI","Street","Street2","city","State","zip"
I due sono praticamente equivalenti. Se stai migliorando le tue abilità SQL, impara ad usare clausole 'JOIN' esplicite. Non usare mai le virgole nella clausola 'from'. –
L'uso di 'DISTINCT' nella query quando si intende ottenere informazioni distinte è una buona indicazione di un programmatore che utilizza il buon senso. La cosa divertente del buon senso è che non è così comune. – zedfoxus
Come menzionato in alcune delle risposte, 'DISTINCT' (e talvolta largo' GROUP BY's) spesso viene usato quando qualcuno non ha completamente compreso il datamodel, e desidera evitare i duplicati - che di solito sono meglio trattati in un altro modo (join più restrittivi, pre-aggregazione o altro). In generale, se tutto ciò che stai cercando di rendere distinto è più ampio delle tue chiavi di indice (> 3-5 colonne), o le colonne non sono su un indice, spesso c'è un modo migliore. –