Nwlapcug.com


MySQL Tutorial distinti

MySQL è un sistema di gestione di open source database relazionale (RDBMS). A causa del suo basso costo, le organizzazioni sono sempre più usarlo per database di grandi dimensioni. Il database più grande, più è probabile che una query restituirà molte righe duplicate, rendendo uscita difficile da leggere e la query lenta. Utilizzando la parola chiave DISTINCT nelle istruzioni SELECT può eliminare questi duplicati nell'output.

Perché si ottengono risultati duplicati

Di solito, una query non Visualizza tutte le colonne nella tabella o delle tabelle a che cui fa riferimento. Un datore di lavoro può, ad esempio, avere una tabella che tiene traccia le assenze degli impiegati. Se lui vuole scoprire quali dipendenti avevano almeno una assenza nell'ultimo mese, egli potrebbe utilizzare una query simile a questo:

SELECT employees.first_name, employees.last_name
DA dipendenti, assenze
DOVE employees.employee_id = absences.employee_id
E absences.date > = 'JUN-01-09'
VAI

Se Bob Smith era assente per tre giorni nel mese di giugno, i risultati della query conterrà tre righe di Bob Smith. Anche se la query non viene visualizzata la data, poiché tre assenze di Bob erano in date diverse, questa query restituisce ciascuna delle tre righe.

Perché sono cattivi risultati duplicati

Righe duplicate non solo rendono la tua uscita difficile da leggere, rallentano anche la query e hog risorse del database. A meno che il database è molto piccolo, è probabilmente sviluppare script SQL in un'istanza di database di sviluppo che è separato dall'istanza di produzione. Non è affatto raro per le istanze di sviluppo di avere meno dati in loro rispetto all'istanza di produzione.

Se permettete che le righe duplicate nell'output, stai facendo il tuo database tutto il modo attraverso tutte le tabelle che hai aderito insieme nella query di ricerca. Questo può rendere una query che correva veloce che abbastanza nell'istanza dev lento per una ricerca per indicizzazione in produzione. Se il database di produzione è grande, la query può funzionare per ore.

Utilizzo e ottimizzazione distinti

L'istruzione select restituisce una riga per Bob Smith:

SELECT DISTINCT employees.first_name, employees.last_name
DA dipendenti, assenze
DOVE employees.employee_id = absences.employee_id
E absences.date tra ' 2009-06-01' e ' 2009-07-01'
VAI

I risultati sono più facili da leggere, ma il server di database deve ancora lavorare troppo duro, se la tabella dipendente ha molto di più righe di tabella assenze. MySQL passerà attraverso tutti i record nella tabella dipendenti per vedere se quel dipendente ha eventuali assenze.

Invece, fare opera distinta per voi per rendere più efficiente la query:

SELECT DISTINCT employees.first_name, employees.last_name
DA dipendenti, assenze
DOVE absences.employee_id = employees.employee_id
E absences.date > = 'JUN-01-09'
VAI

Questa query prenderà un record nella tabella assenze e interrompere la ricerca nella tabella employee, una volta che trova il dipendente che va con quell'assenza. La query verrà eseguito solo come molte ricerche come ci sono le assenze e cercherà tra i molto meno della tabella employee su ogni ricerca. Utilizza meno risorse di database e corre molto più veloce.