【发布时间】:2021-09-12 12:46:01
【问题描述】:
我使用EF Core在primary的基础上删除一行,执行时间超过1秒,否则简单创建一个删除命令只需要400毫秒左右。
我正在使用 Mysql 数据库。
直接使用Mysql删除一行仅需140毫秒。
为什么 EF 这么慢?
using (DBContex db = new DbContext())
{
var revenueModel = db.Revenue.Where(x => x.Id == id).FirstOrDefault();
if (revenueModel != null)
{
db.MSRevenues.Remove(revenueModel);
result = await db.SaveChangesAsync();
}
}
【问题讨论】:
-
您需要向我们提供两者的解释计划,以便我们知道为什么它很慢。还有索引定义
-
您正在从数据库中取出项目,检查它是否存在,然后将其删除。 2次去数据库。对命令执行相同操作,然后进行比较。如果你消除一次旅行,它会更快。
-
如果这是“冷启动”,则加上 EF 构建模型所需的时间。无论如何,是的,比较是不公平的。
-
而 140 毫秒是删除单行的非常长的时间。
-
@DavidBrowne-Microsoft 单行使用 PK 的实际时间应该是多少?
标签: c# .net entity-framework entity-framework-core