私は顧客テーブルからいくつかのフィールドを選択するlinqクエリを持っています。LINQクエリとエンティティフレームワークの組み合わせC#
Func<IQueryable<T>, IQueryable<T>>
と.Invoke
を使用する複数のフィルタが適用されます。
元のクエリは基本的にselect * from customer
です。
フィルタ方式は、本質的であるselect top 10
出力SQLは、私の顧客の表は、このクエリはSSMSで実行するのに約7秒を取るようになり1,000,000以上の行を持つselect top 10 from (select * from customer)
です。 SSMSで実行して出力SQLをselect top 10 from (select top 10 * from customer)
に変更すると、クエリは即座に実行されます(期待どおり)。
LINQがこれらをうまく組み合わせない原因を知っている人がいたら、私が実装できるベストプラクティス/回避策があるかどうかは疑問です。
私の実際のコードは選択されていないことに注意してください*いくつかのフィールドを選択していますが、それ以上の複雑なものはありません。
私は、エンティティフレームワーク(どのバージョンかわからない)
編集してSQL Server 2008およびMVC 3を使用しています:私は追加する必要があり、それはすべての方法のIQueryableのですが、何も最後まで、その結果として評価されていません長い実行はその単一の行に限定されます。
この問題は解決しましたか? –
私は覚えていない、私はデータベースに多くのインデックスを追加したと思う、それは非問題になった – NibblyPig
それはクールだ。あなたが何か作業と大丈夫を実行している限り、それは主なものです。 –