2011-11-21 54 views
0

我有一個LINQ查詢。該查詢從數據庫中檢索10000條記錄。但是,執行此查詢需要很長時間 - 大約2分鐘。可能是什麼原因?然後將數據顯示在列表中的DataGridView中LINQ - .tolist()

+1

我建議不要執行「ToList()」,而是可以使用IEnumberable或IQueryable形式的結果? –

+1

沒有足夠的信息。你有快速連接到你的數據庫?你有適當的連接,索引等嗎?你是否包含一堆導航屬性?實現大量數據並設置狀態跟蹤並不是一項廉價的操作。沒有任何真正的解釋(或代碼!)說「我的代碼很慢」並不是特別有用。 –

+1

你確定它是'ToList()'慢,而不是添加到DataGridView? –

回答

1
  1. 啓動SQL Server Profiler(可在sql management studio的工具菜單中找到)。
  2. 研究生成的實際SQL查詢並驗證您的查詢確實給出了一個查詢而不是10.000。有時linq-to-sql無法很好地轉換爲SQL。
  3. 複製執行的查詢。
  4. 將查詢粘貼到SQL管理工作室窗口中。
  5. 啓用「實際查詢計劃」
  6. 運行查詢並檢查查詢計劃並查看它是否建議任何新索引。創建它們並重試。
+0

這是關於Postgres的,http://stackoverflow.com/questions/8184050/linq-to-postgresql –