我有一个大约需要10秒钟才能执行的查询.奇怪的是,如果我用硬编码的整数(例如3)替换“machineNo”参数,则查询需要一瞬间.这是我迄今遇到的最不寻常的性能问题.public static IEnumerablevwJobAppointment GetAllJo...

我有一个大约需要10秒钟才能执行的查询.
奇怪的是,如果我用硬编码的整数(例如3)替换“machineNo”参数,则查询需要一瞬间.这是我迄今遇到的最不寻常的性能问题.
public static IEnumerable<vwJobAppointment> GetAllJobs(int machineNo)
{
var db = new DbContext();
IEnumerable<vwJobAppointment> list;
list = db.vwJobAppointments.Where(a => a.ResourceId == (machineNo)).AsNoTracking().ToList();
return list;
}
查询需要10秒钟
public static IEnumerable<vwJobAppointment> GetAllJobs(int machineNo)
{
var db = new DbContext();
IEnumerable<vwJobAppointment> list;
list = db.vwJobAppointments.Where(a => a.ResourceId == (3)).AsNoTracking().ToList();
return list;
}
此查询需要一秒钟.
有任何想法吗?我正在使用Entity Framework 5和SQL 2008数据库
解决方法:
EF查询被转换为SQL. SQL使用查询计划来优化查询.变量往往会使程序变慢.在某些情况下,如果在临时表中选择输入变量并将此表连接到通常检查输入变量的位置,则可以克服此问题.该过程的另一个好处是您可以强制执行查询计划.我建议:
>创建一个将资源ID作为输入的存储过程
>尝试在临时表中选择输入变量并加入
>如果这不会有助于强制执行查询计划
织梦狗教程
本文标题为:c# – 使用interger变量与硬编码整数值相比,Linq to SQL查询非常慢


基础教程推荐
猜你喜欢
- Linux+Nginx+Supervisor部署ASP.NET Core实操手册 2023-09-28
- Unity 如何批量修改FBX模型 2023-04-09
- C#先判断是否存在再创建文件夹或文件与递归计算文件夹大小 2023-06-27
- C# MVC 使用LayUI实现下拉框二级联动的功能 2023-03-03
- C#中四步轻松使用log4net记录本地日志的方法 2022-11-26
- C# Winform 实现TCP发消息 2023-04-09
- C#用websocket实现简易聊天功能(服务端) 2023-05-16
- C#实现线性查找算法 2023-06-28
- C# 基础入门--注释 2022-11-03
- 详解c# AutoMapper 使用方式 2022-11-30