查询timeout的问题

引发一:字符串类似不对应导致,这会导致查询慢,严重的会timeout

SELECT *
FROM [table1] 
WHERE [table1].[xtxphm] IN (N'MPK0892203000236', N'MPK0892203000237')

SELECT *
FROM [table1] 
WHERE [table1].[xtxphm] IN ('MPK0892203000236', 'MPK0892203000237')

差别就在于是否带N'',数据库中是char(16),实体类中,假如不标注,那么ef core在生成SQL的时候将字符串默认带N'',由于类型不匹配,就会导致查询慢的问题出现

解决办法是,需要对实体类的属性进行标注,如下所示,将xtxphm标注为char(16),则会生成“快”的那段SQL,问题解决

[Column(TypeName = "char(16)")]
public string xtxphm { get; set; }