sql >> Database teknologi >  >> RDS >> Sqlserver

tsql - Batch-indsættelsesydelse

Selvom det kan se ud til, at mindre kode at behandle burde give dig en præstationsgevinst, er det en dårlig idé at bruge den første mulighed (union alle). Alle udvalgte sætninger skal parses og udføres, før dataene indsættes i en tabel. Det vil forbruge meget hukommelse og kan tage evigheder at blive færdigt, selv for en forholdsvis lille mængde data. På den anden side udføres separate insert-sætninger "on the fly".

Kør en simpel test i SSMS, der vil bevise dette:Lav en simpel tabel med 4 felter og prøv at indsætte 20k rækker. Anden løsning vil køre på få sekunder, mens den første... du vil se :).

Et andet problem er, at når dataene ikke er korrekte i en række (type uoverensstemmelse f.eks.), vil du modtage en fejl som Conversion failed when converting the varchar value 'x' to data type int. , men du vil ikke have nogen indikation af, hvilken række der fejlede - du skal selv finde den. Men med separate inserts, ved du præcis, hvilken insert der mislykkedes.




  1. Indsæt python binært strengobjekt i MySQL blob

  2. mysql ordre efter rand() ydeevne problem og løsning

  3. Sådan får du aktuel dato og tid i MySQL

  4. Automatisk tuning af Azure SQL-database