0

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

谢谢。

4

1 回答 1

0

我的猜测是因为 SharePoint 数据库(即 AllItems 表)的性质,它实际上是在执行多个连接以“构建”列表的列。

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

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

列表

   A   B   C
---------------
|    | K1 |    |
| N1 |----|    |
|    | K2 |    |
|----|----|    |
|    |    |    |
|    | K1 | Z1 |
| N2 |    |    |
|    |----|    |
|    | K2 |    |
|    |----|    |
|    | K3 |    |
|----|----|    |
于 2015-12-01T22:09:40.577 回答