Domanda

Ho due domande che sto UNIONing insieme in modo tale che so già che non ci saranno gli elementi duplicati tra le due query. Pertanto, UNION e UNION ALL produrranno gli stessi risultati.

Quale dovrei usare?

È stato utile?

Soluzione

Si dovrebbe usare quello che corrisponde l'intento di ciò che si sta cercando. Se si vuole garantire che non vi siano duplicati usano UNION, altrimenti utilizzare UNION ALL. Solo perché i suoi dati saranno produrre gli stessi risultati in questo momento non significa che lo sarà sempre.

Detto questo, UNION ALL sarà più veloce su qualsiasi implementazione del database sano di mente, vedi gli articoli qui sotto per gli esempi. Ma in genere, sono gli stessi tranne che esegue UNION un ulteriore passaggio per rimuovere le righe identiche (come ci si potrebbe aspettare), e possono tendere a tempo di esecuzione dominare.

Altri suggerimenti

Vedo che avete codificato questa domanda PRESTAZIONI, quindi immagino che sia la vostra considerazione primaria.

UNION ALL sarà UNION assolutamente outperform dal momento che SQL non deve controllare i due set per dups.

A meno che non è necessario SQL per eseguire il controllo duplicato per voi, sempre utilizzare UNION ALL.

Secondo http://blog.sqlauthority.com/2007/03/10/sql-server-union-vs-union-all-which-is-better-for-performance/ almeno per prestazioni è meglio usare UNION ALL, dal momento che non attivamente duplicati distinte e in quanto tale è più veloce

userei comunque UNION ALL. Anche se sanno che non ci stanno per essere duplicati, a seconda del motore di server di database, potrebbe non sapere che.

Così, giusto per fornire informazioni in più per DB server, in modo che il suo pianificatore di query una scelta migliore (probabilmente), l'uso UNION ALL.

Detto questo, se il DB server 's pianificatore query è abbastanza intelligente per dedurre che le informazioni dagli indici clausola UNION e da tavolo, poi i risultati (le prestazioni e la semantica saggio) dovrebbe essere lo stesso.

In ogni caso, dipende fortemente dalla DB server che si sta utilizzando.

Dato che non ci saranno duplicati dal due utilizzo UNION ALL. Non è necessario per controllare i duplicati e UNION ALL sarà preforme il compito in modo più efficiente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top