根據這個帖子選擇列數是否影響linq查詢的效率?
Does the number of columns returned affect the speed of a query?
我們應該避免Select *
爲SQL
這是否適用於也LINQ查詢?
編輯:
從Select *
對LINQ我的意思是
from a in mytable select a;
並從選定列我的意思是
from a in mytable select new{a.Prop1, a.Prop2};
根據這個帖子選擇列數是否影響linq查詢的效率?
Does the number of columns returned affect the speed of a query?
我們應該避免Select *
爲SQL
這是否適用於也LINQ查詢?
編輯:
從Select *
對LINQ我的意思是
from a in mytable select a;
並從選定列我的意思是
from a in mytable select new{a.Prop1, a.Prop2};
LINQ查詢中,如果對數據集或集合做發生記憶。由於DB將數據存儲在硬盤驅動器中,因此影響不如數據庫級別。
因爲你的RAM比你的硬盤快,所以性能並不明顯。但是將它應用到LINQ還是個不錯的主意
你不能用LINQ做SELECT *
。生成的查詢始終具有要選擇的所有列名稱。因此,爲了確定該表的列,不會因閱讀表定義而造成延遲。但是,從磁盤讀取所有列數據並通過網絡發送數據會有延遲。所以,如果你只需要在表中的多個列,那麼最好只選擇那些列:
var query = from p in db.Person
select new { p.Id, p.Forename, p.Surname };
備註:使用LINQ到對象(內存中查詢)你有相反的情況 - 你已經有對象在內存。選擇一組屬性比較慢,因爲應該創建匿名對象,並且它的屬性應該被映射。但是這個操作不使用硬盤或網絡,所以延遲是微不足道的。
他意味着選擇所有列而不是所需的列。 –
這就是我所問的 –
OP不會向Linq詢問對象只有 –