【问题标题】:ViewField order in SPQuery affecting performanceSPQuery 中的 ViewField 顺序影响性能
【发布时间】:2015-12-01 19:37:17
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: sharepoint sharepoint-2010 caml spquery


    【解决方案1】:

    我的猜测是因为 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-04-17
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 2012-09-18
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多