Оптимизация запроса LINQ - PullRequest
       17

Оптимизация запроса LINQ

0 голосов
/ 03 августа 2020

У меня есть запрос LINQ, который возвращает желаемые результаты и формат, но он кажется немного медленным. Хотите знать, есть ли способ улучшить его производительность? Записи Items и Skus равны 1: 1. Для каждого Item есть 5 ItemWhse и 5 SkuWhse записей для каждой Skus записи.

var orderItems = from item in db.Items
            join sku in db.Skus
                on item.Sku equals sku.Sku
            where item.OrderNumber == 12345678
            select new
            {
                Item = item,
                ItemWhse = from itemWhse in db.ItemWarehouse
                          where itemWhse.OrderNumber == item.OrderNumber
                            && itemWhse.LineNumber == item.LineNumber
                          select itemWhse,
                Sku = sku,
                SkuWhse = from skuWhse in db.SkuWarehouse
                            where skuWhse.Sku == sku.Sku
                            select skuWhse
            };

1 Ответ

1 голос
/ 03 августа 2020

Это может быть медленным, потому что вы используете подзапросы. Попробуйте это:

var orderItems = from item in db.Items
                             join sku in db.Skus
                                 on item.Sku equals sku.Sku
                             join itemWhse in db.ItemWarehouse
                                 on new { item.OrderNumber, item.LineNumber } equals new { itemWhse.OrderNumber, itemWhse.LineNumber }
                             join skuWhse in db.SkuWarehouse
                                 on item.Sku equals skuWhse.Sku
                             where item.OrderNumber == 12345678
                             select new
                             {
                                 Item = item,
                                 ItemWhse = itemWhse,
                                 Sku = sku,
                                 SkuWhse = skuWhse
                             };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...