簡體   English   中英

性能不佳的ASP.NET MVC ViewModel

[英]Bad performance ASP.NET MVC ViewModel

我需要有關我的申請的建議。

首先,我有兩個代表兩個表的模型(沒有真實的表)

客戶(13.5萬行| 40列)

+-------------+--------+------------+
| CUSTOMER_ID |  NAME  | FIRST_NAME |
+-------------+--------+------------+
|        1234 | DUPONT | JEAN       |
+-------------+--------+------------+

命令

+-------------+----------+-------+
| CUSTOMER_ID | ORDER_ID | TYPE  |
+-------------+----------+-------+
|        1234 |     5678 | MEET  |
|        1234 |     9105 | CANDY |
|        2568 |     7523 | CANDY |
+-------------+----------+-------+

我想用他的訂單清單來吸引顧客。

所以我創建了一個Viewmodel:

public class ViewModel
{
    public string CustomerID { get; set; }
    public string Name  { get; set; }
    public string FirstName { get; set; }
    public List<OrdersViewModel> Orders { get; set; }

    public ViewModel(){Orders = new List<OrdersViewModel>(); 
}

現在查詢:

var query = from c in northwind.CUSTOMERS
            select new ViewModel()
                       {
                           CustomerID = c.CustomerID,
                           Name = c.Name,
                           FirstName = c.FirstName
                       };
var CustomersModels = query.ToList();
var queryOrders = from c in northwind.CUSTOMERS
                  join o in northwind.ORDERS
                  on c.CustomerID  equals o.CustomerID 
                  select new OrdersViewModel()
                             { 
                                 CustomerID = d.CustomerID,
                                 OrderId= d.OrderId,
                                 Type= d.Type
                             };
var modelsOrders = queryOrders .ToList();

foreach (ViewModel item in modelsOrders )
{
    var listModels = modelsOrders .Where(e => e.PMRQTOTM ==  item.PMRQTOTM).ToList();
    item.Orders = listModels;
}

有沒有更好的方法來實現這一目標?

我在不到30秒的時間內獲得了CustomerModel ,但是訂單需要幾分鍾的時間...

如果客戶和訂單具有關系,則可以在第一個查詢中使用“ 包含”

即使這樣,也不應一次查詢全部135K。 相反,您要根據頁面大小頁面索引使用“ 跳過接受”

是的,只需在表上創建適當的索引,查詢就會成功:

CREATE UNIQUE INDEX CUSTOMERS_CUSTOMER_ID
ON CUSTOMERS (CUSTOMER_ID)

CREATE INDEX ORDERS_CUSTOMER_ID
ON ORDERS (CUSTOMER_ID)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM