在LINQ查询中,连接外部记录速度慢



在连接外键上的记录时,我遇到了非常慢的查询执行。例如,我有一个"GraphPoint"类,它保存日期时间/双对。这个查询在不到一秒的时间内执行150000条记录(value的虚拟数字):

var data = from x in dataContext.Table1
           select(new GraphPoint(x.Time, 100));
List<GraphPoint> graphPoints = new List<GraphPoint>(data);

当我尝试在外键上链接第二个表时,执行速度慢得像爬行。一个小时后,我放弃了这个查询:

var data = from x in dataContext.Table1
           select(new GraphPoint(x.Time, x.Table2.First().Value));
List<GraphPoint> graphPoints = new List<GraphPoint>(data);

为什么它比第一个慢?

我试过使用预编译查询,但也没有帮助。

使用DataContext.Log属性查看正在生成的确切SQL,然后调查是否可以在数据库端执行任何操作来优化查询性能(例如添加索引)。

用table1加载第二个表可能会提高这里的性能,

DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Table1>(x => x.Table2);
dataContext.LoadOptions = dlo;

Linq正在将其转换为动态sql,并动态地获取table1中相关表记录的每条记录,这降低了性能。

最新更新