この投稿によると
Select *
私たちはSQLのために避けるべきです
これは linq クエリにも当てはまりますか?
編集:
Select *
for linqから
from a in mytable select a;
選択した列から、つまり
from a in mytable select new{a.Prop1, a.Prop2};
この投稿によると
Select *
私たちはSQLのために避けるべきです
これは linq クエリにも当てはまりますか?
編集:
Select *
for linqから
from a in mytable select a;
選択した列から、つまり
from a in mytable select new{a.Prop1, a.Prop2};
SELECT *
LINQではできません。生成されたクエリには、常にすべての列名が選択されます。したがって、そのテーブルの列を決定するためにテーブルの定義を読み取ることによって引き起こされる遅延はありません。ただし、ディスクからすべての列データを読み取り、ネットワークを介してデータを送信すると、遅延が発生します。したがって、テーブルから複数の列のみが必要な場合は、それらの列のみを選択することをお勧めします。
var query = from p in db.Person
select new { p.Id, p.Forename, p.Surname };
備考:Linq to Object(メモリ内クエリ)では、逆の状況になります。すでにオブジェクトがメモリにあります。匿名オブジェクトを作成し、そのプロパティをマッピングする必要があるため、プロパティのセットの選択は遅くなります。ただし、この操作ではハードドライブやネットワークを使用しないため、遅延は重要ではありません。
LINQクエリは、データセットまたはコレクションで実行された場合、メモリ内で発生します。DBはデータをハードドライブに保存するため、影響はDBレベルほど高くありません。
RAMはHDDよりも高速であるため、パフォーマンスは目立ちません。しかし、それをLINQに適用することはまだ悪い考えではありません