我有大约1 500 000个实体的Mysql数据库。当我尝试使用EF核心1.1以下语句来执行和Mysql.Data.EntityFrameworkCore 7.0.7-M61大约需要40分钟完成:使用本地的mysql-CLI和下面的语句EF Core Mysql性能
var results = db.Posts
.Include(u => u.User)
.GroupBy(g => g.User)
.Select(g => new { Nick = g.Key.Name, Count = g.Count() })
.OrderByDescending(e => e.Count)
.ToList();
。另一方面,需要大约16秒完成。
SELECT user.Name, count(*) c
FROM post
JOIN user ON post.UserId = user.Id
GROUP BY user.Name
ORDER BY c DESC
我做错了什么,或者EF核心性能的MySql是如此可怕?
是user.name索引? –
我不这么认为 – Marduk
尝试启用记录执行的实际sql查询。我怀疑实际运行的内容离你写的查询很远。 执行EF生成的每个查询并在mysql-cli中运行它们并计时。你会发现瓶颈 – ironstone13