gpt4 book ai didi

c# - WHERE 子句中的 EF 硬编码值很快,字符串参数很慢

转载 作者:太空宇宙 更新时间:2023-11-03 22:29:59 25 4
gpt4 key购买 nike

当我在我的 EF Where 子句中设置一个字符串变量时,我遇到了非常慢的性能,而当我在 where 子句中硬编码字符串值时,我遇到了非常快的性能。

C#、.Net Framework 4.7.1、EF 6.2

50 毫秒

db.Dealers.Where(x => x.SourceDealerId == "000111222fff333q");

1.5秒

var parameter = "000111222fff333q";
db.Dealers.Where(x => x.SourceDealerId== parameter );

dealerId 在数据库中的类型为 Char(18),并且可以为 null。该方法是数据库优先。以下是经销商列的属性: enter image description here

两种情况下生成的 SQL 有所不同。对于快速的情况:...WHERE dealerId = '000111222fff333q'

对于慢的情况:

enter image description here

最佳答案

这可能与 Entity Framework 中的 NULL 比较设置有关

在您的查询之前添加以下代码以查看它是否有助于您的查询性能:

context.ContextOptions.UseCSharpNullComparisonBehavior = false;

关于c# - WHERE 子句中的 EF 硬编码值很快,字符串参数很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58389041/

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