我有一个大约需要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查询非常慢


猜你喜欢
- Unity实现攻击范围检测并绘制检测区域 2023-02-16
- C# 中的List.Sort()--集合排序方法全面解析 2023-03-29
- C# Winform实现自定义漂亮的通知效果 2023-07-04
- 详解WPF中的隧道路由和冒泡路由事件 2023-04-10
- c# – Windows安装程序中的通用应用程序数据路径 2023-09-18
- c# – 如何将文件从本地存储传递到Windows Phone 8.1中的库? 2023-09-18
- C#调用Python程序传参数获得返回值 2023-05-22
- Unity 如何批量修改FBX模型 2023-04-10
- asp.net实现遍历Request的信息操作示例 2023-02-09
- C# 中的多态底层虚方法调用详情 2023-06-09