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方法提高性能

你可能感兴趣的:(自己看的)