我將首先描述業務案例。如果您只是想要提出這個問題,請稍後跳過幾段...針對特定LINQ for SQL查詢的SQL Server表索引
我正在通過Web在ASP.NET Web API服務器上同步.NET移動客戶端上的數據。由於客戶端的「移動性」,我希望該過程儘可能高效,因此我希望實現增量同步,這意味着客戶要求從指定日期開始新條目,這通常會是最後的同步日期。
我正在處理單獨的條目刪除,所以爲了簡單起見,我們將重點放在新條目和修改條目上。
正在同步的表太大而不適合單個響應,因此實現了分頁。
表中的每個條目具有唯一的ID 柱和LASTUPDATED柱。在服務器上,我使用以下代碼來響應請求的頁面:
var set = Model.Set<T>().Where(t => String.Compare(t.LastUpdated, fromDate, StringComparison.Ordinal) >= 0).OrderBy(t => t.Id);
var queryResultPage = set.Skip(pageSize * pageNumber).Take(pageSize);
return queryResultPage.ToList();
Model.Set是從中檢索數據的DbSet。請忽略我必須使用字符串來表示日期的事實...
我的問題是,什麼SQL Server表索引會產生最佳性能這種情況下?
這不是一個真正的linq-to-sql問題,而是更多的SQL服務器。剖析SQL,在SQL管理工作室中輸入它並檢查查詢計劃。這會給你一個很好的起點。 – Pleun