2015-12-01 26 views
0

編寫SPQuery並指定ViewFields時遇到了一個奇怪的問題。我有八個我需要的領域。其中五個索引。影響性能的SPQuery中的ViewField訂單

我的問題是,根據我指定這些ViewField的順序,我的查詢性能發生了巨大變化。

這裏有兩種情況:

1:

<FieldRef Name="OrderNumber" /> 
<FieldRef Name="Title" /> 
<FieldRef Name="OrderCreateDate" /> 
<FieldRef Name="OrderEstimatedDeliveryDate" /> 
<FieldRef Name="OrderStatus" /> 
<FieldRef Name="OrderOO" /> 
<FieldRef Name="OrderSiteID" /> 
<FieldRef Name="ID" /> 

2:

<FieldRef Name="OrderNumber" /> 
<FieldRef Name="Title" /> 
<FieldRef Name="OrderCreateDate" /> 
<FieldRef Name="OrderEstimatedDeliveryDate" /> 
<FieldRef Name="OrderSiteID" /> 
<FieldRef Name="OrderStatus" /> 
<FieldRef Name="OrderOO" /> 
<FieldRef Name="ID" /> 

被索引的字段有:

OrderNumber 
Title 
OrderCreateDate 
OrderSiteID 
OrderStatus 

當運行與查詢第一個ViewFields爲了它需要4.7秒。以第二順序運行查詢需要62秒。當我測試時,查詢的其他內容都不會改變。

該查詢返回的數據量很大,所以我不認爲它會很快,但任何人都可以幫助解釋爲什麼改變ViewFields的順序有如此大的影響?

謝謝。

回答

0

我的猜測是因爲SharePoint數據庫的性質(即AllItems表),它實際上在進行多個連接以「構建」列表的列。

所以我想它應該取決於你的列表中的數據分佈在列表中(加入{小x小x大}或{大X小x小}表)

例如與下面的數據分佈這將需要更多的時間爲SharePoint調出數據,以BAC比ABC

LIST

A B C 
--------------- 
| | K1 | | 
| N1 |----| | 
| | K2 | | 
|----|----| | 
| | | | 
| | K1 | Z1 | 
| N2 | | | 
| |----| | 
| | K2 | | 
| |----| | 
| | K3 | | 
|----|----| |