Очень медленный основной запрос Entity Framework - PullRequest
0 голосов
/ 11 января 2019

Я работаю над запросом Entity Framework Core, который очень медленно работает с большим объемом данных. Структура базы данных выглядит следующим образом: Structure

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

    public bool IsNew(string name, int shopId, AddressModel addressModel)
    {
        return !this.Entities.Customers
             .Where(c => c.Name == name && c.ShopId == shopId)
             .Select(c => c.Address)
             .Where(a => a.City == addressModel.Name)
             .Any(s => s.PostalCode == addressModel.PostalCode);
    }

Этот запрос очень медленный, если в Магазине много клиентов с одинаковым именем (что не имеет смысла, но это не настоящая база данных).

Итак, мой вопрос: как повысить производительность этого запроса? Это проект ASP.NET Core Web API.

Это сгенерированный SQL-запрос:

SELECT CASE
          WHEN EXISTS (
              SELECT 1
              FROM [Customers] AS [c]
              INNER JOIN [Address] AS [r.Address] ON [r].[AddressId] = [r.Address].[Id]
              WHERE ((([r].[Name] = 'name') AND ([r].[ShopId] = 1)) AND ([r.Address].[City] = 'Amsterdam')) AND ([r.RequestBrowser].[PostalCode] = '4444XX'))
          THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
      END

Спасибо

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