Быстрое получение количества элементов большого списка sharepoint - PullRequest
0 голосов
/ 05 января 2011

Я пытаюсь получить количество элементов в библиотеке документов sharepoint программно. Масштаб, с которым я работаю, составляет 30-70000 единиц. У нас есть usercontrol в smartpart для отображения количества. Наш сайт КОМАНДА.

Это код для получения общего количества:

            SPList VoulnterrList = web.Lists[ListTitle];

            SPQuery query = new SPQuery();

            query.ViewAttributes = "Scope=\"Recursive\"";
            string queries = "<Where><Eq><FieldRef Name='ApprovalStatus' /><Value Type='Choice'>Pending</Value></Eq></Where>";
            query.Query = queries;
            SPListItemCollection lstitemcollAssoID = VoulnterrList.GetItems(query);
            lblCount.Text = "Total Proofs: " + VoulnterrList.Items.Count.ToString() + " Pending Proofs: " + lstitemcollAssoID.Count.ToString();

Проблема в том, что это вызывает серьезную проблему с производительностью: от 75 до 80 секунд для загрузки страницы если мы прокомментируем эту страницу, загрузка уменьшится до 4 сек. Любой лучший подход к этой проблеме

Наша доля share 2007

Ответы [ 2 ]

3 голосов
/ 05 января 2011

Используйте VoulnterrList.ItemCount вместо VoulnterrList.Items.Count.

Когда используется List.Items, все элементы в списке загружаются из базы данных контента.Поскольку нам на самом деле не нужны элементы для подсчета, это бесполезная трата.

Это исправит производительность в строке 8, но у вас все еще могут быть проблемы в строке 9, в зависимости от количества результатов, возвращаемыхзапрос.

0 голосов
/ 05 января 2011

Здесь вы можете выполнить две оптимизации:

  • Создать индекс для одного из столбцов вашего списка

  • Использовать этот столбец в <ViewFields> раздел вашего CAML-запроса, чтобы получить только этот индексированный столбец.

Это должно ускориться.См. Эту статью о том, как создать индекс по столбцу: http://sharepoint.microsoft.com/Blogs/GetThePoint/Lists/Posts/Post.aspx?ID=162

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...