SPQuery中的ViewField顺序影响性能

时间:2015-12-01 19:37:18

标签: sharepoint sharepoint-2010 caml spquery

在编写SPQuery并指定ViewFields时,我遇到了一个奇怪的问题。我有八个需要的领域。其中五个被编入索引。

我的问题是,根据我指定这些ViewFields的顺序,我的查询性能会发生巨大变化。

以下是两种情况:

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的顺序会产生如此大的影响?

感谢。

1 个答案:

答案 0 :(得分:0)

我的猜测是因为SharePoint数据库(即AllItems表)的性质实际上正在进行多个连接以便构建&#39;列表的列。

所以我想它应该真正依赖于列表中的数据分布(加入{small x small x big}或{big x small x small}表)

例如,在具有以下数据分布的LIST中,sharepoint需要更多时间来按BAC的顺序显示数据而不是ABC

LIST

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