sql >> Databasteknik >  >> RDS >> Sqlserver

Rekommendera användning av temptabell eller tabellvariabel i Entity Framework 4. Uppdatera Performance Entity-ramverket

För datavolymer som 300k rader skulle jag glömma EF. Jag skulle göra detta genom att ha en tabell som:

BatchId  RowId

Där RowId är PK för raden vi vill uppdatera, och BatchId hänvisar bara till denna "körning" av 300 000 rader (för att tillåta flera samtidigt etc).

Jag skulle generera ett nytt BatchId (detta kan vara vad som helst unikt -Guid hoppar på) och använda SqlBulkCopy för att infoga posterna i den här tabellen, dvs.

100034   17
100034   22
...
100034   134556

Jag skulle sedan använda en simgle sproc för att göra sammanfogningen och uppdateringen (och ta bort batchen från tabellen).

SqlBulkCopy är det snabbaste sättet att få denna volym data till servern; du kommer inte att drunkna i tur och retur. EF är objektorienterat:bra för många scenarier - men inte det här.



  1. VÄLJ IN I MySQL

  2. mysql:hitta rader med upprepade värden plus villkor

  3. Hur man ändrar tabell lägg till kolumn oracle

  4. MySQL:Visa med Subquery i FROM-klausulens begränsning