Ska lägga in 2 miljoner poster i en databas.
Ska foreach loopa och använda INSERT INTO Och en massa SELECT @@IDENTITY för att jag ska uppdatera andra tabeller samtidigt med ID numrena, därav är ju transaktion nödvändig.
Men jag är lite kluven.... ska jag lägga transaktionskopplingen i eller utanför forloopen?. Pallar verkligen Sql servern Rollbacka 2 miljoner poster om 1 endaste post skulle gå åt pipan vid insättningen?, eller ska jag skapa ett Transaction objekt vid varje loop?, så ifall nåt går snett Rollbackas bara den 1 post som gick snett och inte hela skiten. skål :birp
Kompromissen att göra en commit för var 1000:e post delar ju upp all data i grupper om 1000 och en delmängd i det här fallet är alltså varje grupp om 1000 poster.
jo testade att köra en transaktion per loop, och det funka bra, prestandan dog inte särskilt mycket konstigt nog, och nu rollbacka den enbart posten som gick snett. det måste nog vara det bästa.
134 ms totalt · 3 externa anrop · v20260731065814-full.b746b907