UNION
Operatören kräver att dubbletter av tuplar (rader) tas bort från resultatuppsättningen innan några rader returneras. Det är faktiskt en SORT UNIK operation. Det är relativt billigt för små resultatuppsättningar, men för stora uppsättningar kan det vara resurskrävande på servern (dvs. ta lång tid.)
I teorin, att kombinera frågorna med en UNION ALL
operatör snarare än en UNION
operatorn skulle vara snabbast, eftersom den skulle eliminera (n -1) rundresor till databasen, kontra att köra frågor separat. Men för stora värden på n , kommer du att stöta på praktiska gränser för storleken på SQL-texten (max paketstorlek).
Med tanke på valet mellan UNION
operatör och separata frågor, för en stor resultatuppsättning kommer de separata frågorna att vara mindre resurskrävande på serversidan.
Kort sagt, det är verkligen en avvägning mellan det tunga lyftet för varje fråga, kontra det tunga lyftet av en SORT UNIK operation.