2017-09-28 19 views
0

クエリを使用して実現したアプリケーションを開発する際に、データベースから200個の値しか得られないことが実際に示されました。それはそれを遅くする私の別個のものであることを示した。私が読むことができる限り、Distinctはデータベースからすべての要素を取り出し、後で区別します。理由はそれです。グループで試しただけでなく、パフォーマンスが遅くなりました。これを行う正しい方法は何ですか?エンティティフレームワークの別個の値

model.AlarmLevelDistinct = myDbCtx.StatusView.GroupBy(p => p.AlarmLevel).First().Select(p => p.AlarmLevel).ToList(); 

model.ParametersDistinct = myDbCtx.StatusView.Select(p => p.Parameter).Distinct().ToList(); 
+0

個別には常に遅くクエリを作成します。 DB側ではなく、メモリ内の別個のエントリをソートすることができます。 –

+0

DB側の@StevenAckleyは、メモリ内の別のものよりも高速です。 EFが文を生成します。私たちはThomasからのデータを知らないので、なぜそれが遅いのか分からない。彼は多分ログEFの書き込みを投稿するだろうか?それらにはクエリが含まれています:) –

+0

_ "なぜこのクエリは遅いですか?" _は常に_ "プロファイルする" _です。そこから、より多くの研究を行うことができます。たとえば、インデックスを追加するか、2つを追加すると役立つかもしれません。 – CodeCaster

答えて

1

このお試しください:

var model.AlarmLevelDistinct = myDbCtx.StatusView.GroupBy(c=> c.AlarmLevel).Select(x=> x.Key); 
関連する問題