Порядок ViewField в SPQuery, влияющий на производительность

Я столкнулся со странной проблемой при написании SPQuery и указании 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 имеет такое большое влияние?

Спасибо.


person Nick    schedule 01.12.2015    source источник


Ответы (1)


Я предполагаю, что это связано с характером базы данных SharePoint (например, таблицы AllItems), которая на самом деле выполняет несколько объединений для «построения» столбцов списка.

Поэтому я думаю, что это действительно должно зависеть от распределения данных в вашем списке (объединение таблиц {small x small x big} или {big x small x small})

Например, в списке LIST со следующим распределением данных для обмена данными в порядке BAC потребуется больше времени, чем в порядке ABC.

СПИСОК

   A   B   C
---------------
|    | K1 |    |
| N1 |----|    |
|    | K2 |    |
|----|----|    |
|    |    |    |
|    | K1 | Z1 |
| N2 |    |    |
|    |----|    |
|    | K2 |    |
|    |----|    |
|    | K3 |    |
|----|----|    |
person LiriB    schedule 01.12.2015