Ускорение простого запроса LINQ - PullRequest
2 голосов
/ 06 мая 2011

Есть ли способ ускорить этот запрос:

return _database.Countries
   .Include("Accounts")
   .Where(country => country.Accounts.Count > 0)
   .ToList();

Существует около 70 учетных записей и 70 стран, выполнение этого запроса занимает около 1,5 секунд, что довольно долго.

РЕДАКТИРОВАТЬ: _database является моделью EntityFramework

Ответы [ 2 ]

4 голосов
/ 06 мая 2011

Вы можете попробовать , изменив предложение Where на:

Where(country => country.Accounts.Any())

... но на самом деле вашим первым портом вызова должен быть профилировщик базы данных.Посмотрите на сгенерированный запрос и поместите его в свой любимый профилировщик.Проверяйте индексы и т. Д. Так же, как и любой другой запрос SQL.

Как только вы поймете, почему сгенерированный SQL медленный и как бы вы хотели SQL, вы можете выглядетьначните работать над тем, как изменить свой запрос, чтобы сгенерировать этот SQL.

1 голос
/ 06 мая 2011

Вы можете использовать sql profiler для перехвата запроса, выполняемого к базе данных, затем, используя это, вы можете оптимизировать сценарий с индексами на сервере sql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...