LinqToSQL DateTime过滤器?

时间:2009-07-18 23:19:17

标签: performance linq-to-sql datetime

我有一个linqtosql查询过滤并按日期列排序,需要20秒才能运行。当我直接在DB上运行生成的sqlquery时,它会在0秒内返回。

var myObjs = DB.Table
.Where(obj => obj.DateCreated>=DateTime.Today)
.OrderByDescending(obj => obj.DateCreated);

该表只有100,000条记录,并且DateTime列已编入索引。

另一个在linqtosql表现不满的长线中。但是这个太糟糕了,我确信我一定做错了。

3 个答案:

答案 0 :(得分:1)

我怀疑不同之处在于,尽管运行生成的查询只需要0秒,但这是因为如果您使用的是Enterprise Manager,它实际上并没有显示所有结果。只需获取(并反序列化)100,000个结果的所有数据可能需要花费大量时间,但您的手动查询可能只显示前20个匹配或类似的内容。

如果您在.NET中运行相同的SQL并使用DataReader来获取所有数据,那么需要多长时间?

如果运行启用了性能分析的服务器,那么从LINQ到SQL执行查询需要多长时间?

答案 1 :(得分:1)

谢谢你们......

问题是我的,而不是linq。为简洁起见,我缩短了问题中的查询,但实际上有另一个过滤器已应用于非索引列。添加索引解决了问题。

通过我的循环是什么,正如Jon Skeet建议的那样,在Sql Mgmt studio中运行查询给出了一种错误的信心,因为查询被分页,很快就返回前20行,让我思考林奇应该受到指责。所以索引问题只出现在linq而不是sql mgmt studio中。

答案 2 :(得分:0)

我的查询中看不到任何错误。很高兴看到Linq生成的T-SQL。你试过吗?