小编Nic*_*rdi的帖子

为什么这个实体框架查询在 MySQL 中表现如此糟糕?

让我给你一些设置。我们在 MySQL 5.1 上有一个 InnoDB 表,有近 2000 万条记录,没有外键,以及我们所做的查询的适当索引。我们正在为 .NET Entity Framework 使用最新的 6.3.5 MySQL 版本。通常我们习惯于处理 SQL Server 和实体框架,但在这个项目中我们决定尝试一下 MySQL。

我对这个问题有一些理论,但让我先做代码设置

EF LINQ 查询

var failsForAcct1001 = db.Failures.Where(x => x.AccountId == 1001);
/* farther down and later on in the code */
return failsForAcct1001.OrderBy(x => x.FailureId).Take(50);
Run Code Online (Sandbox Code Playgroud)

生成的 MySQL 代码

请忽略列名,它们不是理解问题所必需的

select
    External1.FailureId,
    External1.col2,
    External1.col3,
from (select
          Inner1.FailureId,
          Inner1.col2,
          Inner1.col3,
      from Failures Inner1
      where External1.AccountId = 1001
    ) External1
order by External1.FailureId
limit 50
Run Code Online (Sandbox Code Playgroud)

生成的这个 SQL 与 SQL Server 中发生的情况非常相似,SQL 处理它没有问题。这不仅仅是一个实体框架问题,当我接受这个查询并在 MySQL …

mysql performance orm entity-framework

6
推荐指数
1
解决办法
7173
查看次数

标签 统计

entity-framework ×1

mysql ×1

orm ×1

performance ×1