Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。230件2次のようなコレクションがあったとします。Serverのテーブルには以下のレコードが10M件あるとします。11|------------------------このデータベースから該当Itemの最新データを取得する効率のよい方法をご教授いただきたいです。n.Id).OrderByDescending(c=>c.DateTime).Select(c=>c.value).FirstOrDefault();}この方法で取得すると、レコードが多い場合、OrderbyDescendingがあるせいかとても遅くなります。何か他によい方法がございますでしょうか。Framework4.0の環境で開発しています。Serverテーブル(DbSet<T>)から直接検索しているように思われます。それともitemlistの件数が実際には数十件以上あるのでしょうか。Valueのマッピング辞書を構築できます。idValue[n.Id];と辞書を引くだけです。個の銅バッジ皆様の回答で大変助かりました。実装しやすい形で記載ありがとうございます。[Value])DateTime列について降順でソートされたインデックスを作成してください。[Id])した結果を利用することも検討の余地があります。maxDateTime)でフィルタリングするという二段階に分割する手もあります。この場合計算量はO(n)×2ですのでソートのO(nlogn)よりは高速になります。通信回数が増えますので、元のクエリーが100ms程度であれば逆に遅くなる可能性もあります。|1itemlistをループで回して複数回検索していますが、これは典型的にはアンチパターンです。接続やSQLの解析実行のオーバーヘッドもループ回数分増えることになります。Idのリストを集めて、1回で検索するようにするようにしてください。若干SQLが面倒です。1典型的には自己結合が使われていたクエリですが、ウィンドウ関数が使える環境ではそちらを使う方が一般的にパフォーマンスが良いです。Id、DateTimeの比率によってはインデックスで性能が改善出来るかもしれません。闇雲にインデックスを張ると更新などのオーバーヘッドになりますので、EXPLAINで実行計画を確認して効果の有無をかならず確認してください。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。