Производительность: запрос CAML, который занимает много времени, чтобы загрузить или что-то еще
-
10-12-2019 - |
Вопрос
У меня есть запрос CAML, который обеспечивает результат, если SPFALDER существует или нет. Когда я делаю item.Count, требуется около 2 секунд для линии для выполнения.Что происходит не так и занимает много времени, чтобы выполнить запрос?
SPQuery query = new SPQuery();
query.Query = "<Where><And><Eq><FieldRef Name='LinkTitle'/><Value Type='Text'>" + folderName + "</Value></Eq><Eq><FieldRef Name='FSObjType'/><Value Type='Lookup'>1</Value></Eq></And></Where>";
query.ViewAttributes = "Scope=\"RecursiveAll\"";
//Retrieve the items based on Query
SPListItemCollection items = list.GetItems(query);
//if (!folderExists)
if (items.Count == 0)
{
//Operation
}
. Решение
Сколько месторождений здесь?Это стандартная библиотека документов, или вы добавили несколько дополнительных метаданных?Даже если это нормально, вы нужно , чтобы потянуть все поля полей?Попробуйте изменить атрибут ViewFields вашего запроса, чтобы вернуть только то, что вам нужно.В противном случае вы проходите все папки («recursiveall» атрибут охвата);Если у вас есть большая библиотека, особенно одна с множеством уровней, что вполне может занять некоторое время.Если с другой стороны, у вас есть хорошее представление о том, в какой папке элемент может быть включен, вы можете рассмотреть возможность разрезания поиска до одной подпапки.