0

この投稿によると

返される列の数はクエリの速度に影響しますか?

Select *私たちはSQLのために避けるべきです

これは linq クエリにも当てはまりますか?

編集:

Select *for linqから

from a in mytable select a;

選択した列から、つまり

from a in mytable select new{a.Prop1, a.Prop2};
4

2 に答える 2

3

SELECT *LINQではできません。生成されたクエリには、常にすべての列名が選択されます。したがって、そのテーブルの列を決定するためにテーブルの定義を読み取ることによって引き起こされる遅延はありません。ただし、ディスクからすべての列データを読み取り、ネットワークを介してデータを送信すると、遅延が発生します。したがって、テーブルから複数の列のみが必要な場合は、それらの列のみを選択することをお勧めします。

var query = from p in db.Person
            select new { p.Id, p.Forename, p.Surname };

備考:Linq to Object(メモリ内クエリ)では、逆の状況になります。すでにオブジェクトがメモリにあります。匿名オブジェクトを作成し、そのプロパティをマッピングする必要があるため、プロパティのセットの選択は遅くなります。ただし、この操作ではハードドライブやネットワークを使用しないため、遅延は重要ではありません。

于 2013-02-01T09:14:08.823 に答える
0

LINQクエリは、データセットまたはコレクションで実行された場合、メモリ内で発生します。DBはデータをハードドライブに保存するため、影響はDBレベルほど高くありません。

RAMはHDDよりも高速であるため、パフォーマンスは目立ちません。しかし、それをLINQに適用することはまだ悪い考えではありません

于 2013-02-01T09:13:30.707 に答える