sql >> Databasteknik >  >> RDS >> Mysql

Mysql Union time V.S. separat fråga en efter en

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.



  1. Oracle instantclient DYLD_LIBRARY_PATH-fel

  2. PostgreSQL multi INSERT...RETURNERAR med flera kolumner

  3. SQL-handledning för nybörjare

  4. Hur man använder Joda-Time med java.sql.Timestamp