2015-09-10 48 views
0

我已經安裝了一個ASP.NET MVC應用程序,並通過天藍色將它連接到數據庫。在這裏,我有一個trafficlog表,其中包含1M以上的條目,當您嘗試在視圖中打開它時,這些條目會收取費用 - 所以我實現了分頁。MVC中的db查詢性能不佳

這是控制器的功能我用得到的條目:

public ActionResult Index(int startIndex){ 
     var trafficlog = db.TrafficLog.OrderByDescending(t => t.time).Skip(startIndex).Take(100); 
     return View(trafficlog.ToList()); 
    } 

不幸的是,這是緩慢的地獄,並返回條目之前出時間。

爲什麼這是一個問題?我假設從數據庫中只需要100個項目,這會使性能非常迅速,但它似乎仍然能夠獲得所有條目。

使用SQL server explorer並直接聯繫數據庫,我得到一個近乎即時的響應,所以我知道SQL服務器沒有問題。

+2

使用事件探查器捕獲正在執行的SQL查詢,並在Management Studio中手動執行該查詢。 – JodyT

+0

您正在使用哪個ORM? – Fredou

+0

將流量記錄添加到手錶中,您將看到將針對您的db運行的整個SQL語句。 – heymega

回答

0

看來你錯過了time列的索引。檢查你是否有索引,如果沒有添加索引。

+0

這不會直接影響SQL查詢嗎? –