在這種情況下確定的,如果,如果我把所有的記錄一次從該查詢asp.net的MVC LINQ的經歷100萬條記錄(proccess時間)
var pages=_db.Pages;
,然後我會處理根據一些場景
pages.Where(m => m.int_PostStatusId == 2)
pages.Where(m => m.int_PostStatusId == 3) and so on
是否真的節省了一些處理時間?或沒有(做什麼是真的嗎?)
在這種情況下確定的,如果,如果我把所有的記錄一次從該查詢asp.net的MVC LINQ的經歷100萬條記錄(proccess時間)
var pages=_db.Pages;
,然後我會處理根據一些場景
pages.Where(m => m.int_PostStatusId == 2)
pages.Where(m => m.int_PostStatusId == 3) and so on
是否真的節省了一些處理時間?或沒有(做什麼是真的嗎?)
要知道,這幾乎肯定不會「立刻的所有記錄」 不帶來一點很重要:
var pages = _db.Pages;
假設這是LINQ to SQL或類似的東西,這只是創建一個查詢 - 它實際上並沒有從數據庫中獲取任何東西。
當您使用pages.Where(...)
創建一個新查詢時,它再次不會從數據庫中獲取任何內容,直到您開始從查詢中讀取數據(例如通過調用ToList
)。因此,很難說明如何幫助您優化代碼 - 我們不知道您在做什麼。
您是否試圖用全部頁面,或僅與子集?如果您嘗試通過PostStatusId進行分組,我建議您明確地執行此操作,而不是通過提取大量不同的過濾器。
假設pages
是使用
的方法是編寫一個查詢來獲取你想要的所有數據的數據庫意識到LINQ查詢提供那麼最有效的:
// Create the query
var pages =
_db.Pages.Where(p => p.int_PostStatusId >= 2 && p.int_PostStatusId <= 100);
// Execute the query
foreach(var page in pages)
ProcessPage(page);
這將生成SQL位像這樣:
select *
from PAGE_TABLE
where PostStatusId >=2 and PostStatusId <= 100
我正在做一個網站地圖 – maztt
@mazhar:這不是*近*足夠的信息來幫助我們給你建議。 –