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

Mysql Union time V.S. separat forespørgsel én efter én

UNION operatør kræver, at duplikerede tupler (rækker) fjernes resultatsættet, før nogen rækker returneres. Det er faktisk en SORT UNIK operation. Det er relativt billigt for små resultatsæt, men for massive sæt kan det være ressourcekrævende på serveren (dvs. tage lang tid.)

I teorien, at kombinere forespørgslerne med en UNION ALL operatør i stedet for en UNION operator ville være hurtigst, da den ville eliminere (n -1) rundrejser til databasen vs at køre forespørgsler separat. Men for store værdier af n , vil du løbe ind i praktiske grænser for størrelsen af ​​SQL-teksten (maks. pakkestørrelse).

Givet valget mellem UNION operatør og separate forespørgsler, for et stort resultatsæt vil de separate forespørgsler være mindre ressourcekrævende på serversiden.

Kort sagt, det er virkelig en afvejning mellem de tunge løft for hver forespørgsel i forhold til de tunge løft af en SORT UNIK operation.



  1. PHP Multidimensional array til uordnet liste, opbygning af url-sti

  2. Fejlmeddelelse:Undtagelse i trådens hoved org.hibernate.HibernateException:Fejl ved adgang til stax-stream

  3. Ændring af en kolonne:null til ikke null

  4. MySQL-fejl - SQLSTATE [42000]:Syntaksfejl eller adgangsovertrædelse:1064