映画サイトを構築しています。私はmvc3とエンティティフレームワークを使用しています。私は主にLINQ to Entitiesを使用してデータベースを照会しています。サイトのGUIは、最初の読み込みの横にある基本的に1つのビューページです。私は主にAjaxを使用して、検索条件などに従ってムービーリストを更新します。だから私は1つのメインクエリを使用します。デバッグモードでこれをチェックすると、実行するたびに10秒かかります。これはもちろん非常に遅いです。私は私の基礎知識に基づいてデータベースを索引付けしました。ここでの主なクエリコードです:linq 2エンティティを使用するとパフォーマンスが低下します
var casts = MovieCasts.Where(d =>
movieIds.Contains(d.MovieId)
&& d.WorkingTitleId != null &&
actorAndActressWtIds.Contains((int)d.WorkingTitleId)).AsEnumerable()
.Where(d=>GetMoviesTop4CelebIds(d.MovieId).Contains(d.CelebId))
.AsQueryable()
.Select(d =>new MCast
{
MovieId = d.MovieId,
Id = d.Id,
CelebId = d.CelebId,
CelebPageViews = d.Celebrity.PageViews,
ActingParts = string.Join(",",d.ActingParts.Select(e => e.Name)),
ActorName = HttpUtility.HtmlDecode(d.Celebrity.ShortName) ??
HttpUtility.HtmlDecode(d.Celebrity.BirthName),
}).ToList();
GetMoviesTop4CelebIds()は、ムービーIDに応じて(celebId)を直接データベースに近づき、int型の短いリストを返す関数です。これは私が最初のAsEnumerable()を使用した理由です。そうでなければ、 "LINQ to Entitiesはメソッドを認識せず、変換できません..." (面白いのは、私のコードはデバッグモードで遅いですコードが非常に遅いです。) 誰かがコードを少し明るくするのを助けてくれますか?私は本当に大好きで、パフォーマンスを改善する必要があります。
oright私はそれを試していただきありがとうございます –