天津風
.NET Core 的大量新增紀錄的效能問題
天津風
情境:
一對多資料表,兩邊的主索引鍵是 AUTO_INCREMENT ,需要新增一筆母表的紀錄跟數十筆子表的紀錄
天津風
實際轉出來的 SQL 其實會長這樣:
INSERT INTO `parent` (`data1`) (Plurk Paste)
天津風
目前 .NET Core 的核心似乎有再討論這類情境的效能問題
Speed up insert operation (BulkSaveChanges) · Issue ...
Do not track after SaveChanges() · Issue #9118 · dot...
Allow opt-out of rows affected check · Issue #10443 ...

不過光是 SaveChanges(); 不要追蹤(不回查自動編號的主索引)就要等到 .NET Core 7 了
天津風
如果是 SQL Server 還有一個方案是 SqlBulkCopy
GitHub - borisdj/EFCore.BulkExtensions: Entity Frame...
天津風
另一個方案是改用 LINQ to DB 做 ORM ,這個 ORM 有多種 Insert 模式可以用
GitHub - linq2db/linq2db: Linq to database provider.
天津風
也有人做 EF Core 後面轉成 LINQ to DB 的方案,不過因為資料沒破千,這個效能反而更差了一點
GitHub - borisdj/EFCore.BulkExtensions: Entity Frame...
天津風
載入新的回覆