Порядок 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 секунды. Ничего другого с запросом не изменилось, когда я тестировал.

Запрос возвращает большой объем данных, поэтому я не ожидаю, что он будет быстрым, но может ли кто-нибудь помочь понять, почему изменение порядка полей обзора имеет такое большое влияние?

Благодарю.

1 ответ

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

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

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

СПИСОК

   A   B   C
---------------
|    | K1 |    |
| N1 |----|    |
|    | K2 |    |
|----|----|    |
|    |    |    |
|    | K1 | Z1 |
| N2 |    |    |
|    |----|    |
|    | K2 |    |
|    |----|    |
|    | K3 |    |
|----|----|    |
Другие вопросы по тегам