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

2023/10/8 5:32:44

本文主要是介绍.NET 数据库大数据 方案(插入、更新、删除、查询 、插入或更新),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

大数据更新,通过update 到临时表 然后表对表进行Update Join

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果糖网



这篇关于.NET 数据库大数据 方案(插入、更新、删除、查询 、插入或更新)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程