2011-01-05 21 views
0

我試圖以編程方式獲取SharePoint文檔庫中項目的數量。我正在使用的規模是30-70000項。我們在smartpart中有usercontrol來顯示計數。我們是一個TEAM網站。以最快的方式獲取大型分享點列表的項目數

這是代碼即可獲得總計數:

  SPList VoulnterrList = web.Lists[ListTitle]; 

      SPQuery query = new SPQuery(); 

      query.ViewAttributes = "Scope=\"Recursive\""; 
      string queries = "<Where><Eq><FieldRef Name='ApprovalStatus' /><Value Type='Choice'>Pending</Value></Eq></Where>"; 
      query.Query = queries; 
      SPListItemCollection lstitemcollAssoID = VoulnterrList.GetItems(query); 
      lblCount.Text = "Total Proofs: " + VoulnterrList.Items.Count.ToString() + " Pending Proofs: " + lstitemcollAssoID.Count.ToString(); 

問題是這樣的有嚴重的性能問題,它需要75到80秒加載頁面。如果我們評論此頁面,負載將降至4秒。對於這個問題

我們沒有更好的計算策略是SharePoint 2007的

回答

3

使用VoulnterrList.ItemCount代替VoulnterrList.Items.Count

當使用List.Items時,列表中的所有項都從內容數據庫加載。由於我們實際上並不需要這些項目來計算,所以這是浪費的開銷。

這將修復第8行的性能,但您可能仍然存在第9行的問題,具體取決於查詢返回的結果數量。

+0

是的,我們已經在同一個場景中,我們在查詢結果中一些物品600 62000個,但項目被有列表 – sooraj 2011-01-05 06:50:53

+0

@sooraj:這是否意味着你仍然有問題? – 2011-01-05 06:56:00

+0

不,我會執行它,我是迴應你以前的評論。 – sooraj 2011-01-05 06:58:14

0

你可以在這裏做了兩個優化:

  • 你的列表

  • 的列的一個創建索引使用該列中<ViewFields>節的CAML查詢,以便只有索引列被檢索。

這應該加快。請參閱本文就如何在列上創建索引: http://sharepoint.microsoft.com/Blogs/GetThePoint/Lists/Posts/Post.aspx?ID=162

+0

我們已經創建了該列的索引 – sooraj 2011-01-05 06:44:38

+0

我會嘗試另一個 – sooraj 2011-01-05 06:45:38

+1

我同意格雷格的回答以及.... – 2011-01-05 06:46:26

相關問題