2013-06-03 64 views
0

我有一個問題在我腦海裏,讓LINQ查詢的更好的性能,是它更好地使用選擇擴展只選擇我們需要的字段,而不是整個領域?!做出更好的LINQ查詢MVC3

我有一個表「新聞」,它有文件(id,標題,文本,註冊時間,regdate,用戶名,...),其中文本字段是非常長的文本,它必須有一個大尺寸行。 ,所以我決定改變在索引頁這個查詢不顯示的消息從這個

var model=db.News.ToList(); 

這一個

var model=db.News.Select(n=>new NewsVM(){ id=r.id, title=r.title, regtime=r.regtime,...}); 

的文字和我的提琴手查詢和接收的字節是同樣

+0

是否有在'text'字段的任何文字? –

+0

是的,當然有。在索引頁,顯示含有ID,標題,...不是文本字段消息列表中,當你點擊一個鏈接,它顯示與文本整個消息。 –

+0

是的,我認爲是這樣,但我們無法確定。 –

回答

1

提琴手不監視從SQL Server的網絡服務器發送的數據。 Fiddler只會顯示視圖生成的HTML大小。

因此,要回答你的問題,是的!如果您只詢問所需的字段,而不是要求所有字段,或者盲目使用select方法,則性能會更好。 Sql Server應該/可以更快地運行查詢。它可以直接從索引中檢索所有要求的字段,而不必實際讀取每一行。還有很多其他的原因,但他們獲得更多的技術。

至於網絡服務器,它也會執行得更快,因爲它不需要從sql server接收儘可能多的數據,並且它會使用更少的內存(留下更多的內存用於緩存等)。

一個很好的比喻就是問我是否問你圖書館前10本書的第一個單詞,如果你必須先將每本書的全部內容複製到你的筆記本上,那麼它會更快,然後給我第一個單詞,或者如果你只是寫下每本書的第一個單詞,它會更快。兩個答案都只有10個字。

+0

我在想同樣的方式,但我誤解了小提琴手。謝謝。你的回答是真的正確! –