我有一个大约需要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查询非常慢
基础教程推荐
猜你喜欢
- c# – mysql连接的最佳驱动程序是什么? 2023-11-22
- WPF+WriteableBitmap实现高性能曲线图的绘制 2023-06-27
- C#调用Win32的API函数--User32.dll 2023-02-06
- C#快速实现拖放操作 2023-06-15
- macOS系统下Vscode的python配置教程 2023-02-09
- C#中四步轻松使用log4net记录本地日志的方法 2022-11-23
- c#消息提示框messagebox的详解及使用 2022-11-02
- C# 对象持久化详解 2022-10-27
- 基于C#实现的轻量级多线程队列图文详解 2023-01-27
- C#使用DoddleReport快速生成报表 2023-06-15