SharePoint: эффективный способ получить все элементы списка

Я получаю все предметы из списка, содержащего около 4000 предметов. Но кажется, что для извлечения всех элементов требуется больше времени, что составляет ~15 до ~22 секунд.Есть ли лучший способ получить все элементы из списка в незначительное время?
Ниже приведен код, который я использую для получения всех элементов:

 using (SPSite spSite = new SPSite(site))
            {
                using (SPWeb web = spSite.OpenWeb())
                {
                    list = web.Lists["ListName"];
                    SPQuery query1 = new SPQuery();
                    string query = "<View>";
                    query += "<ViewFields>";
                    query += "<FieldRef Name='ID' />";
                    query += "<FieldRef Name='Title' />";                    
                    query += "</ViewFields>";
                    query += "<Query>";
                    query += "<Where>";
                    query += "<Eq>";
                    query += "<FieldRef Name='ColName'></FieldRef>";
                    query += "<Value Type='Boolean'>1</Value>";
                    query += "</Eq>";
                    query += "</Where>";
                    query += "</Query>";

                    query += "</View>";
                    query1.Query = query;
                    SPListItemCollection listItems = list.GetItems(query1);
                }
            }

2 ответа

Обычно, когда требуется так много времени, чтобы получить предметы, вы достигаете границы или предела.

Сначала вам нужно протестировать ограничение вашего запроса, чтобы вы возвращали менее 2000 элементов, или пока не обнаружите, что он начинает работать невероятно медленно.

Затем вам нужно посмотреть, сможете ли вы разбить ваш запрос или сделать несколько запросов, чтобы получить ваши элементы в зависимости от этого показателя.

ура

Truez

Извлечение множества предметов за один выстрел, безусловно, не лучшая практика или рекомендуемый способ.

Вы должны изучить альтернативные варианты, такие как

  • Индексы столбцов: связаны с используемой версией SharePoint; оценить и проверить, действительно ли может дать некоторые преимущества в вашем случае
  • Разделите выборку запросов данных на несколько запросов, найдя группу, которая лучше всего подходит для ваших данных, вместе с пороговым значением. Таким образом, вы можете выполнять запросы параллельно и, скорее всего, увидите выигрыш в производительности
  • Используйте Поиск: используйте механизм поиска SharePoint, который сильно отличается в разных версиях SharePoint, но наверняка это будет быстрым по сравнению с SPQuery. С недостатками необходимости полагаться на графики поискового сканирования для получения актуальных данных
Другие вопросы по тегам