首页 > 解决方案 > 非常慢的 Entity Framework Core 查询

问题描述

我正在处理一个 Entity Framework Core 查询,该查询在处理大量数据时变得非常慢。数据库结构如下所示: 结构

我想创建一个查询来检查客户的地址是否已被使用。我想出了这个查询:

    public bool IsNew(string name, int shopId, AddressModel addressModel)
    {
        return !this.Entities.Customers
             .Where(c => c.Name == name && c.ShopId == shopId)
             .Select(c => c.Address)
             .Where(a => a.City == addressModel.Name)
             .Any(s => s.PostalCode == addressModel.PostalCode);
    }

如果 Shop 有很多同名客户(这没有意义,但这不是真正的数据库),则此查询非常慢。

所以我的问题是:如何提高这个查询的性能?这是一个 ASP.NET Core Web API 项目。

这是生成的 SQL 查询:

SELECT CASE
          WHEN EXISTS (
              SELECT 1
              FROM [Customers] AS [c]
              INNER JOIN [Address] AS [r.Address] ON [r].[AddressId] = [r.Address].[Id]
              WHERE ((([r].[Name] = 'name') AND ([r].[ShopId] = 1)) AND ([r.Address].[City] = 'Amsterdam')) AND ([r.RequestBrowser].[PostalCode] = '4444XX'))
          THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
      END

谢谢

标签: c#asp.net-coreentity-framework-core

解决方案


推荐阅读