EFCore 性能优化

1.参数化查询
//写法一 性能不好
var queryStudent = context.Student.Where(x=>x.Name.Length>1);

var MaxLength = 1;
//写法二 性能好 数据库表达式树生成的SQL语句可以重用 但是分页是特例 有另一种写法优化性能
var queryStudent = context.Student.Where(x=>x.Name.Length>MaxLength );

2.分页优化

var model = new Model()
{
Offset = 0 ,
Limit = 10
}
//写法一 性能不好 不会重用数据库表达式树生成的SQL语句
var Student = context.Customers.OrderBy(x=>x.Id).Skip(model.Offset).Take(model.Limit).ToList();
//写法二 性能好 可以重用数据库表达式树生成的SQL语句
var Student = context.Customers.OrderBy(x=>x.Id).Skip(()=>model.Offset).Take(()=>model.Limit).ToList();

3.自定义编写数据库命令拦截器
用于在运行之前修改EF生成的SQL

//后期补上代码

4.AsNoTracking

5.关闭回调DetectChanges方法提高性能

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值