gpt4 book ai didi

performance - LINQ AsNoTracking 运行缓慢

转载 作者:行者123 更新时间:2023-12-05 07:22:26 25 4
gpt4 key购买 nike

我需要来 self 的数据库的未经编辑的项目列表。它运行缓慢,所以我试图加快速度。

所以我将 AsNoTracking 添加到 LINQ 查询中,它运行得更慢了!

以下代码平均耗时 7.43 秒。 AsNoTracking 位于之后 Where

var result = await _context.SalesOrderItems.Where(x => x.SalesOrderId == SalesOrderId ).AsNoTracking().ToListAsync();

以下代码平均耗时 8.62 秒。 AsNoTracking 在 Where 之前

var result = await _context.SalesOrderItems.AsNoTracking().Where(x => x.SalesOrderId == SalesOrderId ).ToListAsync();

以下代码平均耗时 6.95 秒。没有 AsNoTracking

var result = await _context.SalesOrderItems.Where(x => x.SalesOrderId == SalesOrderId ).ToListAsync();

所以我错过了什么吗?我一直认为 AsNoTracking() 应该运行得更快,并且是只读列表的理想选择。此表还有两个子表。

最佳答案

The first time a query is run it must be compiled. If entities are already tracked by the context, then a tracking query will return those instances rather than creating new.

这就是为什么被跟踪的实体可能比使用 AsNoTracking() 执行得更快的原因。

https://github.com/aspnet/EntityFrameworkCore/issues/14366

但是大约 7 秒的执行时间表明它没有问题/没有跟踪。这意味着数据库有问题(例如,不是索引列),如果数据设置正确,大约 15 亿条记录会在 30 毫升但几秒钟内得到。

关于performance - LINQ AsNoTracking 运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56492628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com