2016-11-07 32 views
0

我有一個數據庫表20列,但我只需要與8個列的工作。什麼更有效率,返回所有列或鑄造linq C#

它是更有效地恢復整個表

_context.products.where(x => x.active); 

或者是更好地做到這

_context.products.where(x => x.active).select(x => new SubModels.ProductItem { id = x.id, name = x.name, category = x.category etc etc}); 

感謝

+9

只返回您需要的數據總是更高效。 – Magnus

+0

是的,這就是我以爲我記得一會回來,只是想確認它。謝謝! –

+0

雖然 – Liam

回答

2

你幾乎可以參考這個question「爲什麼SELECT *被認爲是有害的」。

它似乎與您的情況相當相關,並有很多要點。

因此,從一個查詢的性能角度來看,只選擇你所需要的總是更好。但是你應該總是考慮一些其他的事情,比如發出額外的查詢來獲得你已經返回的數據的可能性。

+0

這似乎很有趣,謝謝你的鏈接 –

+0

歡迎:) –

0

的選擇是更有效,因爲它查詢只是你需要的數據。在你的第一個例子中,它將查詢db上的所有列。

+1

我覺得沒有足夠的信息來確定將會有一個全表掃描 – Jonesopolis

+1

它不會執行[表掃描](https://en.wikipedia.org/wiki/Full_table_scan),這完全是另一回事。這將涉及'Where'子句而不是'select'。 – Liam

+0

這不是因爲你查詢了所有你做表掃描的列。請注意,OP不查詢所有行。 –

相關問題