0

SPQuery を記述して ViewFields を指定すると、奇妙な問題が発生しました。必要な 8 つのフィールドがあります。そのうちの 5 つが索引付けされています。

私の問題は、これらの ViewFields を指定する順序に応じて、クエリのパフォーマンスが大幅に変化することです。

以下に 2 つのシナリオを示します。

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 秒かかります。2 番目の順序でクエリを実行すると、62 秒かかります。私がテストしたとき、クエリの変更は他にありません。

クエリは大量のデータを返しているため、非常に高速になるとは思いませんが、ViewFields の順序を変更すると大きな影響が生じる理由について誰か助けてもらえますか?

ありがとう。

4

1 に答える 1

0

私の推測では、リストの列を「構築」するために実際に複数の結合を行っている SharePoint データベース (つまり、AllItems テーブル) の性質によるものです。

したがって、リスト内のデータ分布に本当に依存する必要があると思います({small x small x big}または{big x small x small}テーブルの結合)

たとえば、次のデータ分布を持つ LIST では、sharepoint が ABC よりも BAC の順にデータを表示するのに時間がかかります。

リスト

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