ASP.NET MVC アクション メソッドで次の簡単なクエリがあります。
IEnumerable<Company> query = unitOfWork.CompanyRepository.dbSet
.Include("Adresses.PhoneNumbers")
.Include("Adresses.FaxNumber")
.Include("Emails").Where(q => q.CustomerCompany == true);
このアクション メソッドは ajax get リクエストを介して呼び出され、最大 25 秒かかる場合があります。データベース内のわずか 40 社の企業に対して。それぞれに 1 つの住所と、多くても 2 つの電話番号とファックス番号があります。(興味深いことに、200 ~ 500 ミリ秒かかることもありますが、非常にまれです)。
このクエリを次のように変更すると
IEnumerable<Company> query = unitOfWork.CompanyRepository.dbSet
.Where(q => q.CustomerCompany == true);
約 200 ミリ秒しかかかりません。
では、なぜ.Include
そんなに高価なのか不思議です。私のアプリケーションは運用中で、Azure Web サイトで SQL Azure を使用しています。
ありがとう。