sql >> Databasteknik >  >> RDS >> Sqlserver

UNION vs DISTINCT i prestanda

Det beror på frågan -- utan att känna till komplexiteten i frågorna A, B eller C är det inte en som kan besvaras, så det bästa är att profilera och sedan bedöma utifrån det.

Men... Jag skulle nog gå med ett fackförbund oavsett:ett tillfälligt bord kan vara ganska dyrt, särskilt när det blir stort. Kom ihåg att med en temporär tabell skapar du explicit extra operationer och därmed mer i/o för att stressa diskundersystemet. Om du kan göra ett urval utan att ta till ett tillfälligt bord, kommer det alltid (förmodligen) att gå snabbare.

Det kommer definitivt att finnas ett undantag (eller sju) från denna regel, därför är det bättre att profilera dig mot en realistiskt stor datauppsättning för att se till att du får några solida siffror att fatta ett lämpligt beslut om.



  1. Lagrad procedur ökar inkompatibel med sql_mode=only_full_group_by trots att sql_mode är tomt

  2. Flera databaser i docker och docker-compose

  3. Hämta vissa strängar i en sträng med Oracle SQL

  4. Lägga till ett INDEX till en CTE