关于LINQ最高性能方法的思考

时间:2012-02-29 14:47:23

标签: sql sql-server linq entity-framework

我有一个总计 350448 记录的表,我需要通过LINQ with Entity Framework执行多个重复查询。

这些重复查询的数量约为 1440 ,我无法修改数据库。

在性能方面最好的方法是什么:

  • 选择所有350448条记录并在客户端上查询
  • 对数据库执行1440查询
  • 首先尝试缩小数据范围,然后在客户端上执行查询

我需要能够基本上查找1440个项目,但我知道可能存在的性能问题。

1 个答案:

答案 0 :(得分:0)

听起来你可以能够逃脱:

List<DateTime> dates = ...;
var query = context.MyEntities
                   .Where(x => dates.Contains(x.LastUpdated))
                   .ToList();

然而:

  • 我不是确定 EF是否支持Contains的方式与LINQ to SQL相同
  • 您可能需要将查询分成几个批次;它取决于EF是否足够智能以使用表值参数(以及您的数据库是否支持它)。