Domino 9 und frühere Versionen > ND9: Entwicklung

Datenexport Performance optimiert

(1/5) > >>

Legolas:
Hallo Forum,

ich habe eine Anwendung mit ca. 600.000 Dokumente in einer Ansicht mit ca. 150 Spalten.
Diese möchte ich zur Auswertung nach EXCEL exportieren.

Das funktioniert soweit auch bis auf die Tatsache, dass dies eine gefühlte Ewigkeit geht.
Ich habe das Ganze über  NotesViewEntryCollection = view.AllEntries  gelöst, da ich davon ausgegangen bin, dass die Daten dann direkt aus der view gelesen werden ohne dass ich jedes Dokument anfassen muss.

Gibt es evtl. noch eine andere Möglichkeit die schneller ist als diese?
Bin offen für (fast) alles! ;)

Grüße
Bernd

Tode:
Hier gab es mal eine Abhandlung zu dem Thema. Ich habe gerade eben nochmal in einer 80.000 Dokumente View den Vergleich zwischen NotesViewNavigator und NotesViewEntryCollection laufen lassen, und kann die Ergebnisse für Notes 9.0.1 nicht bestätigen. Bei mir hat der NotesViewNavigator mit 9 gegenüber 14 Sekunden klar gewonnen...

Also dieser Code:

--- Code: ---Dim varTest as Variant
Dim viwTest as NotesView
Dim vec as NotesViewEntryCollection
Dim viwNav as NotesViewNavigator

Dim ve as NotesViewEntry

Dim dblStart as Double
Dim varX as Variant

dblStart = Now
Set viwTest = g_dbFocus.GetView( "($All)" )
Set viwNav = viwTest.CreateViewNav
Set ve= viwNav.GetFirst()
While not ve is Nothing
  varX = ve.ColumnValues(0)
  Set ve = viwNav.GetNext(ve)
Wend
Messagebox Now - dblStart   

--- Ende Code ---

gewinnt mit nur 9 sec. Laufzeit gegen
--- Code: ---Dim varTest as Variant
Dim viwTest as NotesView
Dim vec as NotesViewEntryCollection
Dim viwNav as NotesViewNavigator

Dim ve as NotesViewEntry

Dim dblStart as Double
Dim varX as Variant

dblStart = Now
Set viwTest = g_dbFocus.GetView( "($All)" )
Set vec = viwTest.AllEntries
Set ve=vec.GetFirstEntry()
While not ve is Nothing
  varX = ve.ColumnValues(0)
  Set ve = vec.GetNextEntry(ve)
Wend
Messagebox Now - dblStart   

--- Ende Code ---
diesen Code mit 14 sek. Laufzeit. (auf zwei verschiedenen Datenbanken getestet, die beide zwischen 80.000 und 90.000 Dokumenten haben)

umi:
Hallo

Die entscheidende Frag hier ist zuerst:
Wie exportierst Du das ganze nach Excel ?
Via CSV oder via COM ?

jBubbleBoy:
in Excel kann durch das setzen der ScreenUpdating-Eigenschaft die Performance erhöht werden:

--- Code: ---excel.ScreenUpdating = false
'-- Excel Werte setzen
excel.ScreenUpdating = True  

--- Ende Code ---

Andrew Harder:

--- Zitat von: Tode am 15.07.16 - 16:59:23 ---Hier Ich habe gerade eben nochmal in einer 80.000 Dokumente View den Vergleich zwischen NotesViewNavigator und NotesViewEntryCollection laufen lassen, und kann die Ergebnisse für Notes 9.0.1 nicht bestätigen. Bei mir hat der NotesViewNavigator mit 9 gegenüber 14 Sekunden klar gewonnen...
--- Ende Zitat ---
Was mich interessieren würde:
Wenn Du den Autoupdate der View auf False setzt und den Navigator Cache auf 400 hochsetzt, wird es dann (Debugger muss unbedingt aus sein) noch schneller?
Oder ist das in Notes 9.01 schon so optimiert, das das nichts mehr bringt?

Ich hatte da mal einen Export großer Datenmengen in 8.5.x gemacht, da dachte ich erst das da ein Fehler sein müsse, so schnell war das dann.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln