none
Обработка запросов SPQuery у пользователей работает медленно RRS feed

  • Вопрос

  • Добрый день!

    Столкнудся с такой проблемой:

    Была разработана страница, на которой выводится список документов из бибдиотеки документов в соответствии с веденным параметром пользователя. В библиотеке около 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

Ответы

Все ответы