.NET 数据库大数据 方案(插入、更新、删除、查询 、插入或更新)

发布时间 2023-10-08 03:02:21作者: 果糖大数据科技

1、功能介绍 (需要版本5.0.45)

海量数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现

当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API

操作数据库达到极限性能

 

BulkCopy

大数据插入 

db.Fastest<DC_Scene>().BulkCopy(lstData);
db.Fastest<Order>().PageSize(100000).BulkCopy(insertObjs);
//Winfom中要用Task.Run 底层是异步实现

  

BulkUpdate

大数据更新

db.Fastest<RealmAuctionDatum>().BulkUpdate(GetList())//更新
db.Fastest<RealmAuctionDatum>().PageSize(100000).BulkUpdate(GetList())//更新 
//Winfom中要用Task.Run 底层是异步实现

  

BulkMerge (5.1.4.109)

大数据 : 插入或者更新

//原理//Oracle和SqlServer使用了Merge Into+BulkCopy
//其他库底层是 db.Storageable(list).ExecuteSqlBulkCopy() 
db.Fastest<Order>().BulkMerge(List);
db.Fastest<Order>().PageSize(100000).BulkMerge(List); 
//Winfom中要用Task.Run 底层是异步实现

  

BulkQuery

普通查询就行了性能超快
db.Queryable<Order>().ToList();//比Dapper略快 
//分页降低内存 适合复杂的DTO转换和导出
List<Order> order = new List<Order>(); 
db.Queryable<Order>().ForEach(it=> { order.Add(it); /*禁止这儿操作数据库因为会循环*/} ,2000);

 

BulkDelete

直接用分页删除就行了

db.Deleteable<Order>(list).PageSize(1000).ExecuteCommand();
 

Select INTO

表和表之间的导入
Select INTO
表和表之间的导入
//例1:不同实体插入 Select Into
db.Queryable<Order>()
 //.IgnoreColumns(it=>it.Id) 如果是自增可以忽略,不过ID就不一样了   
 .Select(it=>new { name=it.name,......})            
 .IntoTable<实体2>();
   
//例2: 同实体不同表插入    
db.Queryable<Order>()
 //.IgnoreColumns(it=>it.Id) 如果是自增可以忽略,不过ID就不一样了
.IntoTable<Order>("新表名");

  

SqlSugar ORM更多用法:

Nuget安装 - SqlSugar 5x - .NET果糖网