Лучший отвечающий
Обработка запросов SPQuery у пользователей работает медленно

Вопрос
-
Добрый день!
Столкнудся с такой проблемой:
Была разработана страница, на которой выводится список документов из бибдиотеки документов в соответствии с веденным параметром пользователя. В библиотеке около 65000 записей и скаждым днем увеличивается.
Для выборки данных использую SPQuery.
protected DataTable GetSearchData()
{
var accountName = (TextBox)rpbSearch.FindItemByValue("DefaultSearch").FindControl("tbxDefaultSearch");
var searchValue = accountName.Text.Trim();
SPList listDocs = SPContext.Current.Web.Lists.TryGetList("Договоры и документы");
SPQuery query = new SPQuery();
query.ViewFields = string.Concat("<FieldRef Name='ID' />"
, "<FieldRef Name='ContentType' />"
, "<FieldRef Name='m_regnumber' />"
, "<FieldRef Name='typeOfContract' />"
, "<FieldRef Name='m_iniciator' />"
, "<FieldRef Name='m_legalentity' />"
, "<FieldRef Name='m_contractcompany' />"
, "<FieldRef Name='m_legalentity2' />"
, "<FieldRef Name='m_status' />"
, "<FieldRef Name='city' />"
, "<FieldRef Name='registrator' />");
query.ViewFieldsOnly = true;
query.Query = @"<Where>
<Or>
<Or>
<Or>
<Or>
<Or>
<Contains>
<FieldRef Name=""ID""/>
<Value Type=""Text"">" + searchValue + @"</Value>
</Contains>
<Contains>
<FieldRef Name=""m_regnumber""/>
<Value Type=""Text"">" + searchValue + @"</Value>
</Contains>
</Or>
<Contains>
<FieldRef Name=""m_iniciator""/>
<Value Type=""Text"">" + searchValue + @"</Value>
</Contains>
</Or>
<Contains>
<FieldRef Name=""m_legalentity""/>
<Value Type=""Text"">" + searchValue + @"</Value>
</Contains>
</Or>
<Contains>
<FieldRef Name=""m_contractcompany""/>
<Value Type=""Text"">" + searchValue + @"</Value>
</Contains>
</Or>
<Contains>
<FieldRef Name=""m_legalentity2""/>
<Value Type=""Text"">" + searchValue + @"</Value>
</Contains>
</Or>
</Where>";
SPListItemCollection items = listDocs.GetItems(query);
if (items.Count > 0)
{
return items.GetDataTable();
}
else
{
return FormatDataTable();
}
}
При этом у меня рабоатет относительно быстро, а у пользователей очень медленно, обработка может достигать 10-20 мин.
Характеристики серверов:
SharePoint SQL ОС Windows Server 2008 R2 Windows Server 2008 R2 Пямять 32Gb 32Gb На сервере SharePoint максимум затрачивается 12Gb памяти.
Каким обрабом можно увеличить скорость обработки запросов.
Заранее спасибо!
26 марта 2013 г. 10:06
Ответы
-
думаю что основная разница в том, что наверное Вы тестируете код от имени администратора?
посмотрите:
Списки SharePoint, часть V: работа с большими списками
Управление мощностью SharePoint Server 2010: ограничения, связанные с программным обеспечением
- Изменено Kaplin VladimirModerator 26 марта 2013 г. 11:52
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 27 марта 2013 г. 7:28
26 марта 2013 г. 11:51Модератор -
Добрый день,
Вы также можете попробовать использовать ContentIterator вместо SPQuery он поидее должен работать чуть пошустрее.
Также рекомендую для поиска использовать возможности стандартного Search Engine и не писать свой "поиск с преферансом".
ПС: ну и 65к записей в активном списке - это уже черезчур.... Смотрите в сторону изменения архитектуры в будущих решениях.
SharePoint Advanced Visibility Options project
SharePoint Managed Metadata Claims Provider project- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 27 марта 2013 г. 7:28
26 марта 2013 г. 13:47
Все ответы
-
думаю что основная разница в том, что наверное Вы тестируете код от имени администратора?
посмотрите:
Списки SharePoint, часть V: работа с большими списками
Управление мощностью SharePoint Server 2010: ограничения, связанные с программным обеспечением
- Изменено Kaplin VladimirModerator 26 марта 2013 г. 11:52
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 27 марта 2013 г. 7:28
26 марта 2013 г. 11:51Модератор -
Добрый день,
Вы также можете попробовать использовать ContentIterator вместо SPQuery он поидее должен работать чуть пошустрее.
Также рекомендую для поиска использовать возможности стандартного Search Engine и не писать свой "поиск с преферансом".
ПС: ну и 65к записей в активном списке - это уже черезчур.... Смотрите в сторону изменения архитектуры в будущих решениях.
SharePoint Advanced Visibility Options project
SharePoint Managed Metadata Claims Provider project- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 27 марта 2013 г. 7:28
26 марта 2013 г. 13:47 -
Добрый день,
Вы также можете попробовать использовать Content Iterator вместо SPQuery он поидее должен работать чуть пошустрее.
Также рекомендую для поиска использовать возможности стандартного Search Engine и не писать свой "поиск с преферансом".
ПС: ну и 65к записей в активном списке - это уже черезчур.... Смотрите в сторону изменения архитектуры в будущих решениях.
Спасибо за подсказки. Попробую.
27 марта 2013 г. 5:43