我们查询了大约40个与客户相关的数据字段。查询通常会返回大量记录,例如最多20,000条记录。我们只想在前500个结果中使用说。然后,我们只希望能够一次翻阅10个。
LINQ是否跳过并采取合理的方法?使用这种方法与其他方式手动执行是否有任何潜在的性能问题?
答案 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不同。)