sách gpt4 ai đã đi

sql - 为什么我的 Entity Framework 查询 Single 速度很慢?

In lại 作者:行者123 更新时间:2023-12-02 21:00:24 30 4
mua khóa gpt4 Nike

我有一个非常简单的查询,但速度非常慢。 Entity Framework Profiler 表示大约需要 100 毫秒。

dbContext.Users.Single(u => u.Id == userId);

经过一番尝试后,我发现一个查询非常相似,但速度更快(大约 3 毫秒)。

dbContext.Users.Where(u => u.Id == userId).ToList().Single();

当我比较两个查询的 sql 时,第二个查询没有使用嵌套 SELECT 且没有 TOP 操作。但我不会仅仅因为这两件事就期望它快 30 倍。此外,当使用 SQL Server Management Studio 执行查询时,没有可测量的差异。

当我查看执行计划时,它们都进行聚集索引查找,其查询成本为 100%。而额外的 select 和 Top 操作的查询成本为 0%。EFProfiler 的查询计划也是如此,表明它应该没有任何区别。

在这种情况下,我该怎么做才能更好地了解查询性能?

下面是第一个查询的结果 SQL。

SELECT [Limit1].[Id] AS [Id],
[Limit1].[EmailAddress] AS [EmailAddress],
[Limit1].[FirstName] AS [FirstName],
[Limit1].[LastName] AS [LastName]
FROM (SELECT TOP (2) [Extent1].[Id] AS [Id],
[Extent1].[EmailAddress] AS [EmailAddress],
[Extent1].[FirstName] AS [FirstName],
[Extent1].[LastName] AS [LastName]
FROM [dbo].[Users] AS [Extent1]
WHERE ([Extent1].[Id] = 'b5604f88-3e18-42a5-a45e-c66cc2a632d3' /* @p__linq__0 */)
AND ('b5604f88-3e18-42a5-a45e-c66cc2a632d3' /* @p__linq__0 */ IS NOT NULL)) AS [Limit1]

这里是第二个(更快)查询的 SQL。

SELECT [Extent1].[Id] AS [Id],
[Extent1].[EmailAddress] AS [EmailAddress],
[Extent1].[FirstName] AS [FirstName],
[Extent1].[LastName] AS [LastName]
FROM [dbo].[Users] AS [Extent1]
WHERE ([Extent1].[Id] = 'b5604f88-3e18-42a5-a45e-c66cc2a632d3' /* @p__linq__0 */)
AND ('b5604f88-3e18-42a5-a45e-c66cc2a632d3' /* @p__linq__0 */ IS NOT NULL)

1 Câu trả lời

您真正想要的是dbContext.Users.Find(id) - 如果不需要,它甚至不会访问数据库。查看更多详细信息msdn .

关于sql - 为什么我的 Entity Framework 查询 Single 速度很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23518680/

30 4 0
Bài viết được đề xuất: gcc - 有没有办法让 gcc 在发出错误时打印有问题的行?
Bài viết được đề xuất: api - 特定日期的雅虎财经提要
Bài viết được đề xuất: git - 滥用 Git 来实现事件存储架构?
Bài viết được đề xuất: cxf - "org.apache.cxf.jaxrs.bus.providers"不工作
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com