当我使用IQueryable函数时,它会显着增加查询的时间

时间:2012-06-29 19:37:27

标签: c# performance linq oracle entity-framework

我怎么做以下事情:

var query = from a in OBJ where a.ID == ID select c;

它是< 1秒,但是一旦我添加了IQueryable函数,它会将它增加到~3秒?

var query = (from a in OBJ where a.ID == ID select c).SingleOrDefault();

当我使用FirstOrDefault()时会发生同样的情况。

1 个答案:

答案 0 :(得分:10)

此:

var query = from a in OBJ where a.ID == ID select c;

...只需代表查询。它根本不会执行它。它应该炽热快速 - 不仅仅是“不到一秒钟”,而是“几乎无法估量的快速。”

此:

var query = (from a in OBJ where a.ID == ID select c).SingleOrDefault();

...获取实际数据,这意味着它必须执行查询。

通常,LINQ尽可能使用延迟执行。这只是一个例子。搜索LINQ延迟执行,你将获得加载的文章命中数。潜入任何最适合您阅读风格的人:)