c# - 非常慢的 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 - 我查找素数的代码不起作用。这里有什么问题?
- php - 如何在 Laravel 中将用户 ID 设置为存储路径?
- python - 变量范围,不可变 vs 可变,以 += 表示
- expo - 如何阅读 Expo 独立应用程序的 TestFlight 崩溃日志
- java - 我不明白我们如何在方法 compareTo 中使用方法 compareTo
- django - PostgreSQL 全文搜索准确度
- c# - 统一拖动360视图相机
- sql - 更新项目是子查询一部分的字段
- swift - 将 DateComponents 数组设置为 UserDefaults 不起作用
- android-studio - 向应用程序添加菜单时遇到问题