私は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);
ビットを返すこれがないと思えると返さない結果
クエリは1日に1000回実行されます。パラメータは、複数の基準に基づいてクラウドストレージから関連する画像を検索するためにウェブページからウェブサービスへの呼び出しの結果として生成される。希望は意味をなさない。私はLinqの問題を強制しようとしていると思うようになり始めており、パフォーマンスと簡単なフリーテキストインデックス検索のためにRaw ADOを使うべきです –
何度再コンパイルされますか?あなたはコンパイルされたクエリをどこかのメモリに保持しようとしていますか?また、各動的クエリは1日に1000回実行されますか?さらに、私は、とにかくイメージをダウンロードしなければならないときに、クエリのパフォーマンスがどのように変化するかが不思議です(クエリ時間よりもずっと長い転送時間ではありませんか?)。私はあなたのデザインを批判しようとはしていません、私は実際にはこれらの特性を必要とする状況の考えに興味を持っています。 – marr75