gpt4 book ai didi

c# - LINQ 需要 40 秒才能结束查询 - 性能

转载 作者:行者123 更新时间:2023-11-30 16:07:19 25 4
gpt4 key购买 nike

我正在调用本地网络之外的外部数据库,但是查询需要 40 秒才能结束..

我正在使用 edmx 调用电话。

String Example = "Example";
var Result = EDMXEntity.Entities
.Where(
x =>
(
x.Name.ToString().ToLower().Contains(Example.ToLower())
))
.Take(50)
.ToList();

感谢 Szer 的当前代码:

var Result = EDMXEntity.Entities.Where(x => SqlFunctions.PatIndex(x.Name.ToString().ToLower(), Example.ToLower()) > 0).Take(50).ToList();

最佳答案

我上面评论的迟到答案:

问题是您正在将所有实体从数据库加载到内存并在您的机器上进行过滤。您应该在数据库引擎的帮助下过滤您的查询。

为此你应该使用 SqlFunctions由 LINQ SQL 提供程序映射到直接 T-SQL 代码。在您的情况下,您可以将 string.Contains() 替换为 SqlFunctions.PatIndex 这几乎是相同的(它返回 int 而不是 bool )

像这样:

var result = EDMXEntity.Entities
.Where(x => SqlFunctions.PatIndex(
stringPattern: x.Name.ToString().ToLower(),
target: Example.ToLower()) > 0)
.Take(50)
.ToList();

关于c# - LINQ 需要 40 秒才能结束查询 - 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30896806/

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