-1

私はこれらの2つのどちらを使用するのが良いのか疑問に思っています:

1:context.Threads.Where(thread => thread.Id == threadId).Select(thread => thread.Posts).(...)

また

2:context.Posts.Where(post=> post.thread.Id == threadId).Select().(...)

2つの間に違いはありますか?

4

2 に答える 2

2

スレッドと投稿の数に加えて、両方のクエリによって生成されている SQL と、SQL プロファイラーでのそれぞれの所要時間も確認する必要があります。

補足として、私はあなたの両方の質問に質問します。私はあなたが Entity Framework を使用していると仮定しています (あなたが尋ねた他の質問に基づいて)。そのため、Post クラスには既にそのテーブルに ThreadID が含まれている必要があります (ここに表示されるナビゲーション プロパティに基づいて、あなたはデータベースの Post テーブルに ThreadID フィールドが必要です)。その場合、次のクエリがニーズにより適している可能性があります。

context.Posts.Where(p => p.threadID == threadId);

これを行うと、Threads テーブルに関する記述が削除されます。つまり、EF は、要求している情報を取得するために結合ステートメントを使用する必要がありません。その Threads テーブルは含まれないため、これが 1 つのスレッドからすべての投稿を取得する最速の方法です。

于 2013-01-07T14:26:00.280 に答える
0

スレッド数と投稿数によって異なります。

于 2013-01-07T14:20:29.533 に答える