Cnfzh 软件博客

EF Core 查询优化的几个实用习惯

从 AsNoTracking 到拆分查询,把慢查询一条条捋清楚。

先量再改

加索引之前先看执行计划。EF Core 生成的 SQL 经常在意想不到的地方把整个实体物化出来。

AsNoTracking

只读查询一律加上,省掉快照开销:

var posts = await db.Posts.AsNoTracking().Where(p => p.IsPublished).ToListAsync();

投影而不是取实体

列表页只需要五个字段,就 Select 成 DTO,不要把 Content 也拉出来。

拆分查询

Include 多了会笛卡尔积爆炸,AsSplitQuery() 一行救命。

评论 0

还没有评论,来说两句吧。

提交前需验证邮箱,验证码 10 分钟内有效。

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.