EF Core 查询优化的几个实用习惯
从 AsNoTracking 到拆分查询,把慢查询一条条捋清楚。
先量再改
加索引之前先看执行计划。EF Core 生成的 SQL 经常在意想不到的地方把整个实体物化出来。
AsNoTracking
只读查询一律加上,省掉快照开销:
var posts = await db.Posts.AsNoTracking().Where(p => p.IsPublished).ToListAsync();
投影而不是取实体
列表页只需要五个字段,就 Select 成 DTO,不要把 Content 也拉出来。
拆分查询
Include 多了会笛卡尔积爆炸,AsSplitQuery() 一行救命。
评论 0
还没有评论,来说两句吧。