Sql server 实体框架查询速度差异很大。但是为什么呢?

Sql server 实体框架查询速度差异很大。但是为什么呢?,sql-server,linq,entity-framework,Sql Server,Linq,Entity Framework,我正在编写一个方法,允许用户根据某些条件从表中搜索记录。他们可能并不总是提交所有的条件,所以我正在尝试创建EF查询,以便它可以根据用户提供的条件构建成多个部分。相关内容如下: using (var db = new EntityModels.My_Entities()) { //very fast List<EntityModels.TBLEFFORT> effs = db.TBLEFFORT.Where(a => a.ANID == "5F180A0000K0

我正在编写一个方法,允许用户根据某些条件从表中搜索记录。他们可能并不总是提交所有的条件,所以我正在尝试创建EF查询,以便它可以根据用户提供的条件构建成多个部分。相关内容如下:

using (var db = new EntityModels.My_Entities())
{
    //very fast
    List<EntityModels.TBLEFFORT> effs = db.TBLEFFORT.Where(a => a.ANID == "5F180A0000K0").ToList();

    //very slow
    IQueryable<EntityModels.TBLEFFORT> query = db.TBLEFFORT.AsQueryable();
    query.Where(a => a.ANID == "5F180A0000K0");
    List<EntityModels.TBLEFFORT> efforts = query.ToList();
}
使用(var db=new EntityModels.My_Entities())
{
//很快
List effs=db.TBLEFFORT.Where(a=>a.ANID==“5f180a000k0”).ToList();
//很慢
IQueryable query=db.TBLEFFORT.AsQueryable();
其中(a=>a.ANID==“5F180A0000K0”);
List努力=query.ToList();
}
第一行运行非常快,返回150条左右的记录。
第二个构造比我愿意等待的时间还要长(至少在我放弃之前2分钟)。为什么它们如此不同?我想使用第二个构造,以便基于用户是否包含特定条件来构建查询对象。我在这里遗漏了什么?

这一行不正确:

query.Where(a => a.ANID == "5F180A0000K0");
应该是:

query = query.Where(a => a.ANID == "5F180A0000K0");

其中
方法是一个返回新IQueryable的函数。它不会修改调用它的IQueryable。

此行不正确:

query.Where(a => a.ANID == "5F180A0000K0");
应该是:

query = query.Where(a => a.ANID == "5F180A0000K0");

其中
方法是一个返回新IQueryable的函数。它不会修改调用它的IQueryable。

捕捉得好!这绝对是问题所在!接得好!这绝对是问题所在!