LINQ跳过&有不错的表现?

时间:2010-09-08 06:09:40

标签: linq sql-server-2008 ado.net skip-take

我们查询了大约40个与客户相关的数据字段。查询通常会返回大量记录,例如最多20,000条记录。我们只想在前500个结果中使用说。然后,我们只希望能够一次翻阅10个。

LINQ是否跳过并采取合理的方法?使用这种方法与其他方式手动执行是否有任何潜在的性能问题?

2 个答案:

答案 0 :(得分:6)

没有Take()

Skip()使用TOP子句生成SQL。

带有Take()

Skip使用ROW_NUMBER()生成SQL,如here所示。

另外,我建议使用优秀的LINQPad工具或LINQ to SQL日志来检查生成的查询。

答案 1 :(得分:2)

是的,如果您使用的是SQL Server 2005+,它将生成使用ROW_NUMBER()函数的SQL,以提高分页效率(与Scott uses in this blog post的SQL不同。)