2009-06-19 3 views
0

私はLinq2Sqlのパフォーマンスに問題があります。これは、生のADO.NETと比較して、コンパイルされたクエリのパスを導きました。私はこれを持ってはるかにこれまで動的Linq2Sqlコンパイル済みクエリを作成するには?

public static readonly Func<MyDataContext, WebServices.Search.Parameters, IQueryable<image>> 
    Compiled_SelectImagesLinq = 
     CompiledQuery.Compile<MyDataContext, WebServices.Search.Parameters, IQueryable<image>>(
      (dc, parameters) => from i in dc.images 
        join l in dc.links on i.image_id equals l.image_id 
        join r in dc.resolutions on i.image_id equals r.image_id 
        where i.image_enabled == true && i.image_rating >= parameters.MinRating 
        && i.image_rating <= parameters.MaxRating 
        select i 
    ); 

私は現在、

if (parameters.Country != null) 
{ 
    query = query.Where(x => x.image_country_id == parameters.Country); 
} 

if (parameters.ComponentId != null) 
{ 
    query = query.Where(x => x.links.Any(l => l.link_component_id == parameters.ComponentId)); 
} 

など、など

私がそうであるように、クエリに追加のオプションパラメータを追加する方法を見つけ出すことはできませんしかし、

var query = Compiled_SelectImagesLinq(parameters); 

のような別の関数を作成してから、追加のパラメータをクエリに追加してみましたそして

return query.Distinct().Take(parameters.Results); 

ビットを返すこれがないと思えると返さない結果

答えて

0

は、この記事を見てください。それは(あなたがあなたのクエリをコンパイルしている、特に以来)何が必要ないかもしれないが、いつでも誰かが同じ文での動的およびLINQのに言及し、私はこの記事にそれらを参照してください。

ダイナミックLINQ:LINQ動的クエリライブラリの使用

コンパイルされたクエリパフォーマンスの向上は、オーバーヘッドを等しくする前に、ベンチマークにあなたの特定のクエリを持っていますが、多くの場合、照会したい

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

0

は10〜20回使用する必要があります。また、どのようにwhere句にパラメータを追加していますか?

さらに、動的にコンパイルされたクエリは少し不一致です。動的LINQクエリライブラリは必要な処理を行いますが、コンパイルされたクエリパフォーマンスの向上は望んでいないと思います。

+2

クエリは1日に1000回実行されます。パラメータは、複数の基準に基づいてクラウドストレージから関連する画像を検索するためにウェブページからウェブサービスへの呼び出しの結果として生成される。希望は意味をなさない。私はLinqの問題を強制しようとしていると思うようになり始めており、パフォーマンスと簡単なフリーテキストインデックス検索のためにRaw ADOを使うべきです –

+0

何度再コンパイルされますか?あなたはコンパイルされたクエリをどこかのメモリに保持しようとしていますか?また、各動的クエリは1日に1000回実行されますか?さらに、私は、とにかくイメージをダウンロードしなければならないときに、クエリのパフォーマンスがどのように変化するかが不思議です(クエリ時間よりもずっと長い転送時間ではありませんか?)。私はあなたのデザインを批判しようとはしていません、私は実際にはこれらの特性を必要とする状況の考えに興味を持っています。 – marr75