Mysql
 sql >> Database >  >> RDS >> Mysql

Mysql Union time V.S. separare la query una per una

Il UNION l'operatore richiede che le tuple duplicate (righe) vengano rimosse dal set di risultati prima che vengano restituite le righe. Questa è effettivamente un'operazione SORT UNIQUE. È relativamente poco costoso per set di risultati di piccole dimensioni, ma per set di grandi dimensioni può richiedere molte risorse per il tempo del server (ovvero richiedere molto tempo).

In teoria, combinando le query con un UNION ALL operatore anziché un UNION sarebbe il più veloce, poiché eliminerebbe (n -1) viaggi di andata e ritorno al database, rispetto all'esecuzione di query separatamente. Ma per valori elevati di n , ti imbatterai in limiti pratici sulla dimensione del testo SQL (dimensione massima del pacchetto).

Data la scelta tra UNION operatore e query separate, per un set di risultati di grandi dimensioni, le query separate richiederanno meno risorse sul lato server.

In breve, è davvero un compromesso tra il sollevamento di carichi pesanti per ogni query e il sollevamento di carichi pesanti di un'operazione SORT UNIQUE.