0
我需要從用戶統計表中獲取最後50條記錄(表中有超過一百萬條記錄)。如果我在下面運行查詢,則得到響應速度非常慢,並且IIS7池內存使用量跳至800mb。我認爲查詢將在SQL Server上執行,而不是在應用程序本身中執行。如何優化這個查詢?在服務器上執行查詢
user.Statistics.OrderByDescending(p => p.DateStamp).Take(50);
我需要從用戶統計表中獲取最後50條記錄(表中有超過一百萬條記錄)。如果我在下面運行查詢,則得到響應速度非常慢,並且IIS7池內存使用量跳至800mb。我認爲查詢將在SQL Server上執行,而不是在應用程序本身中執行。如何優化這個查詢?在服務器上執行查詢
user.Statistics.OrderByDescending(p => p.DateStamp).Take(50);
該查詢將在服務器上執行。我的猜測是查詢速度很慢,因爲您在DateStamp列上沒有適當的索引。
我強烈建議您獲取LinqPad的副本(如果您還沒有副本),請在LinqPad中執行此查詢,查看將什麼T-SQL發送到服務器(LinqPad允許您執行此操作),採取T-SQL並查看SSMS中的查詢執行計劃。我敢打賭,表掃描正在完成,而不是索引查找。
使用適當的索引,即使表中有1000萬行,該查詢最多也應該在<的範圍內執行1-2秒。