2010-09-08 70 views
3

我們有關於客戶的約40個數據字段的查詢。查詢通常會返回大量的記錄,例如高達20,000。我們只想使用前500個結果。然後,我們只希望能夠一次遍歷10個頁面。LINQ skip&take有不錯的表現嗎?

是LINQ跳過並採取合理的方法嗎?使用這種方法與使用其他方式進行手動執行時是否存在潛在的性能問題?

+0

如果您正確地做到了,請不要使用它。最好的方法是編寫代碼,然後真正看到正在執行什麼查詢,並將它與如果必須編寫原始SQL一起編寫的內容進行比較。 – RPM1984 2010-09-08 06:15:37

回答

6

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

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

此外,我建議使用優秀的LINQPad工具或LINQ to SQL日誌記錄來檢查生成的查詢。

2

是的,如果你使用的是SQL Server 2005+,它將生成使用ROW_NUMBER()函數的SQL來使分頁高效(與SQL不同,它與Scott uses in this blog post的SQL不同)。

相關問題