簡體   English   中英

實體框架中的大表

[英]Big Tables in Entity Framework

我在Windows Azure Server中有一個WEB SQL,我需要在具有40.000行的表中搜索一個項目。 查詢的執行時間是一分鍾,對於Web應用程序(或任何類型的應用程序..)來說太長了。 如何減少這個時間?

我的問題與此類似: 實體框架非常大的表列表 ,但是答案不可接受,因為分頁的方法也很大。

搜索代碼:

    public ActionResult SearchNcm(string typeSearch, string searchString)
    {
        var ncms = repository.VIEWNCM.ToList();

        if (Request.IsAjaxRequest())
        {
            if (!String.IsNullOrEmpty(searchString))
            {
                switch (typeSearch)
                {
                    case "cod":
                        ncms = ncms.Where(e => e.CODIGO_LEITURA.ToLower().Contains(searchString.ToLower()) || e.CODIGO.ToLower().Contains(searchString.ToLower())).ToList();
                        break;
                    default:
                        ncms = ncms.Where(e => e.DESCRICAO.ToLower().Contains(searchString.ToLower())).ToList();
                        break;
                }
            }
        }



        return PartialView("BuscarNcm", ncms);
    }

不是答案,但是我需要空間來擴展上面的評論:

請記住,除非您迭代或調用ToList(),否則IQueryable和IEnumerable不會做任何事情。 這意味着您可以執行以下操作:

var ncms = repository.VIEWNCM; // this should be IQueryable or IEnumerable - no query yet

if(Request.IsAjaxRequest())
{
    if(!string.IsNullOrEmpty(searchString))
    {
        switch(typeSearch)
        {
                case "cod":
                    // No query here either!
                    ncms = ncms.Where(e => e.CODIGO_LEITURA.ToLower().Contains(searchString.ToLower()) || e.CODIGO.ToLower().Contains(searchString.ToLower()));
                    break;
                default:
                    // Nor here!
                    ncms = ncms.Where(e => e.DESCRICAO.ToLower().Contains(searchString.ToLower()));
                    break;
            }
        }
    }
}
// This is the important bit - what happens if the request is not an AJAX request?
else
{
    ncms = ncms.Take(1000); // eg, limit to first 1000 rows
}

return PartialView("BuscarNcm", ncms.ToList()); // finally here we execute the query before going to the View

如果searchString為空,您可能還需要一個默認過濾器

暫無
暫無

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

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