LINQ порядок предложения Where и Join - PullRequest
0 голосов
/ 03 мая 2018

Есть ли разница в производительности между:

ctx
   .Students
   .Join(
      ctx.Countries, 
      q => q.CountryId, 
      q => q.CountryId, 
      (c,s) => new { c,s })
   .Where(q => q.c.CountryName= "USA")
   .Select(q => q.s.StudentName)
   .ToList();

и

ctx
   .Students
   .Join(
      ctx.Countries.Where(q => q.CountryName == "USA"), 
      q => q.CountryId, 
      q => q.CountryId, 
      (c,s) => s)
   .Select(q => q.StudentName)
   .ToList();

Если так, какой запрос предпочтительнее?

1 Ответ

0 голосов
/ 03 мая 2018

Общее правило - фильтр слева, то есть сначала делайте ваши фильтры. С такими компилируемыми языками, как C #, вам действительно нужно просто протестировать это. Добавьте несколько раз штампов и посмотрите, сколько времени потребуется для выполнения больших запросов.

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

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