Что-то происходит с вашим кодом «за пределами» навигации по представлению: вы уже выбрали наиболее эффективный способ навигации по представлению, используя «GetFirstDocument» и «GetNextDocument».Использование NotesViewNavigator, как упомянуто в комментариях, будет немного лучше, но не существенно.
Вы можете немного повысить производительность своего кода, установив view.AutoUpdate = False, чтобы запретить обновлять объект представления при изменении чего-либо в бэкэнде.Но так как вы только читаете данные, а не меняете представление данных, это не даст вам большого прироста производительности.
Мое предложение: Определите НАСТОЯЩЕЕ узкое место вашего кода, закомментировав отдельные разделы, чтобы узнать, когда он начинает замедляться:
Первая попытка:
while doc:
doc = view.GetNextDocument(doc)
Медленно?
Если нет, то следующая попытка:
while doc:
arr = doc.ColumnValues
doc = view.GetNextDocument(doc)
Медленно?
Если да: ColumnValues - ваш враг ... Если нет, то следующая попытка:
while doc:
arr = doc.ColumnValues
data.append(arr)
doc = view.GetNextDocument(doc)
Мне было бы очень интересно получить ваши результаты о том, где оно начинает замедляться.