2011-01-15 36 views
0

在這種情況下確定的,如果,如果我把所有的記錄一次從該查詢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 

是否真的節省了一些處理時間?或沒有(做什麼是真的嗎?)

回答

3

要知道,這幾乎肯定不會「立刻的所有記錄」 帶來一點很重要:

var pages = _db.Pages; 

假設這是LINQ to SQL或類似的東西,這只是創建一個查詢 - 它實際上並沒有從數據庫中獲取任何東西。

當您使用pages.Where(...)創建一個新查詢時,它再次不會從數據庫中獲取任何內容,直到您開始從查詢中讀取數據(例如通過調用ToList)。因此,很難說明如何幫助您優化代碼 - 我們不知道您在做什麼。

您是否試圖用全部頁面,或僅與子集?如果您嘗試通過PostStatusId進行分組,我建議您明確地執行此操作,而不是通過提取大量不同的過濾器。

+0

我正在做一個網站地圖 – maztt

+0

@mazhar:這不是*近*足夠的信息來幫助我們給你建議。 –

1

假設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 
相關問題