Article
大量の列があり、データベースに100,000を超える行が含まれているモデルがあるとします。var articles = db.Articles.ToList()
データベース内の各記事の記事モデル全体を取得してメモリに保持するようなことをするとしたらどうでしょうか。
したがって、エントリの日付とそのタイトルのみを表示するテーブルにデータを入力する場合、エンティティフレームワークを使用してデータベースからこれらの列のみを取得する方法はありますか?より効率的ですか?
これによると、
オブジェクトコンテキストで返されたオブジェクトを追跡するには、コストがかかります。オブジェクトへの変更を検出し、同じ論理エンティティに対する複数のリクエストが同じオブジェクトインスタンスを返すようにするには、オブジェクトをObjectContextインスタンスにアタッチする必要があります。オブジェクトを更新または削除する予定がなく、ID管理を必要としない場合は、クエリを実行するときにNoTrackingマージオプションの使用を検討してください。
NoTracking
データは変更または削除されておらず、表示されているだけなので、使用する必要があるようです。したがって、私のクエリはになりvar articles = db.Articles.AsNoTracking().ToList()
ます。これをより効率的にするために私がすべき他のことはありますか?
私が持っているもう1つの質問は、この回答によると、大規模なデータベースを処理する場合、を使用.Contains(...)
するとパフォーマンスが大幅に低下するということです。大規模なデータベースのエントリを検索するために使用する推奨される方法は何ですか?