問: 我想問一下:尋呼。尋呼和性能
是在.net中的分頁功能使任何性能差異,我的意思是,有時我有大量數據,如果我想在gridview上綁定這些數據,例如「分頁」,例如count 10,帶上10條記錄和10等或相同,如果我不使用分頁,它將首先帶來所有數據,然後根據分頁計數查看它們。如果分頁和性能之間沒有關係,那麼最佳做法是什麼案件 ?。
問: 我想問一下:尋呼。尋呼和性能
是在.net中的分頁功能使任何性能差異,我的意思是,有時我有大量數據,如果我想在gridview上綁定這些數據,例如「分頁」,例如count 10,帶上10條記錄和10等或相同,如果我不使用分頁,它將首先帶來所有數據,然後根據分頁計數查看它們。如果分頁和性能之間沒有關係,那麼最佳做法是什麼案件 ?。
它取決於如何實現分頁。某些處理分頁的服務器控件的早期版本,將整個數據集讀入內存,然後選擇可用記錄的子集。這非常低效,因爲您已經承擔了從數據庫移動數據的傳輸成本以及存儲它的內存成本。
你可以做的是在數據庫級執行分頁,傳遞頁碼和要檢索的項目數,這樣你只能讀取源數據的子集。它將更加高效。唯一的缺點是,您可能需要在數據庫中另外添加一個查詢來確定項目的總數,以便您可以正確進行頁面。總而言之,我認爲「源頭分頁」始終是首選解決方案。
據我所知,像DataGrid的所有ASP.NET服務器控件加載整個結果集,然後只顯示一個頁面。你將不得不自己實現這一點。
有一個關於這個討論在這裏:http://www.codeproject.com/KB/aspnet/PagingLarge.aspx
感謝了很多,怎麼樣在.NET 3.5分頁的服務器控件? – 2011-03-23 08:12:31
啓用LINQ的O/RM工具(如LINQ to SQL和Entity Framework)可以提供很多幫助,因爲分頁非常簡單,只需添加'.skip(page * pageSize).Take(pageSize)'到一個查詢('IQueryable' )。 –
Steven
2011-03-23 08:13:04
和請你能澄清喲意味着什麼「源頭尋呼」? – 2011-03-23 08:14:20