Domino 9 und frühere Versionen > Entwicklung

Datenbank öffnen und wechsel zwischen Ansichten wird immer langsammer

(1/6) > >>

Kadlec:
Eine Db wird immer langsammer und ich habe leider keine Vergleichswerte ob das Normal ist. Die Db hat eine grösse von 407 Mb (25 538 docs), und das öffnen dauert mitunter ca. 67 sec.

Als "Bremsen" habe ich evt. zwei Felder die Berechnet sind,
dort stecken auch einige Lookups drin.
Da die Felder aber nur Berechnet werden sollen wenn sich ein anderes Feld ändert, habe ich jetzt die Formel auf @If(@IsDocRecalculated;... erweitert, subjectiv betrachtet ändert sich aber nichts.
Wenn ich mir die Formel so ansehe (und die Lookups wären das Problem) müsste ich diese doch sowieso in die @If Abfrage einpacken, oder???

Aslo z.B. @If(@IsDocRecalculated;@Set("Temp1";@DbLookup(bla, bla...

Eine der Formeln:
REM "In diesem Feld wird geprüft ob ein Fehler vorliegt";
REM "Fehler sind: fehlender Mop-Code/Hazardous Indikator und falsche Vorgruppierung.";

REM "*Abschnitt zur Berechnung des Fehlers \'Vorgruppe/Katalo Nr.\'*";

REM "LU der Vorgruppen für die es keine Katalog Nummern gibt.";

TempLUView := "LUKeyword_V";
TempLUKey := "Keine Katalog Nummer";
TempLUNoCatNum := @DbLookup("Notes":"NoCache";"";TempLUView;TempLUKey;2);
TempNoCatNum := @If(@IsError(TempLUNoCatNum);"ERROR";TempLUNoCatNum);
TempNoCatNumForm := @Left(TempNoCatNum;2)+@Right(TempNoCatNum;2);

REM "LU der Vergleichswerte für die Prüfung Vorgruppierung zu Katalog Nummer.";

TempLUView1 := "LUAllCatalogGroups_V";
TempLUKey1 := @Left(CatNoGroup_T;2)+@Right(CatNoGroup_T;2);


TempLUCatGroup2 := @DbLookup("Notes":"NoCache";"";TempLUView1;TempLUKey1;2);
TempCatGroup2 := @If(@IsError(TempLUCatGroup2);"ERROR";TempLUCatGroup2);
TempLUCatGroup3 := @DbLookup("Notes":"NoCache";"";TempLUView1;TempLUKey1;3);
TempCatGroup3 := @If(@IsError(TempLUCatGroup3);"ERROR";TempLUCatGroup3);

REM "Der eine Vergleichswert ist die Vorgruppierung und die zwei zusätzlichen Werte die in der TempCatGroup2 und 3 gespeichert sind.";
REM "Der zweite Vergleichswert ist die TempCatNo.";

REM "****VERGLEICHSWERT **********************";
TempControl := TempLUKey1 : TempCatGroup2 : TempCatGroup3;


TempCatNo := @Left(CatalogNo_T;4);

REM "Zum entgültigen Vergleich muss ausserdem noch die TempNoCatNum herangezogen werden.";
REM "Die Prüfung sieht dann wie folgt aus:";
REM "1 - Wenn die Vorgruppe (TempLUKey1) gleich einem der Werte dieser Temp ist dann liegt kein Fehler vor.";
REM "2 - Wenn die TempCatNo gleich einem der Werte der TempControl ist dann liegt ebenfalls kein Fehler vor.";
REM "Die Prüfung wird aber Umgekehrt da ja geprüft wird ob NOK.";

TempCatNoOK := @If(@IsMember(TempLUKey1;TempNoCatNumForm) | @IsMember(TempCatNo;TempControl);"Yes";"No");

REM "Der zweite Bereich überprüft ob ein MOP Code eingegeben wurde";
TempMOPCodeNOK := @If(MopCode_T ="???");

REM "Der dritte Bereich überprüft ob ein Hazardous Indikator gesetzt ist.";
TempHazIndNOK := @If(@Explode(Process_T) = "Hazardous" & HazIndicator_T != "A") |
                              @If(@Explode(Process_T) != "Hazardous" & HazIndicator_T = "A") ;

TempZust1 := @If(TempCatNoOK = "No");
TempZust2 := @If(TempMOPCodeNOK);
TempZust3 := @If(TempHazIndNOK);

TempAusg1 := "Vorgruppe/Katalog Nr.";
TempAusg2 := "MOP Code";
TempAusg3 := "Hazard Indicator";

@If(@IsDocBeingRecalculated;@Explode(@If(TempZust1;TempAusg1;",") : @If(TempZust2;TempAusg2;",") : @If(TempZust3;TempAusg3;",");",");@Success)

Axel:
Hi,

du schreibst, dass das Öffnen 67 sec. dauert. Welches Öffnen meinst du denn? Das Öffnen der DB oder eines Dokumentes?.

Wenn es um das Öffnen der DB geht, dann spielen die berechneten Felder erstmal keine Rolle. Dann liegt es an der Ansicht die beim Starten angezeigt wird.


Axel

animate:
glaube ich auch, dass das an den Ansichten liegt. Ist dort evtl eine Select-Formel, die die aktuelle Zeit/das aktuelle Datum berechnet und als  Auswahlkriterium verwendet?

Kadlec:
Ja es geht um das öffnen der Db.
Nein die Select Formel enthält kein Datum:
TempShowStatus := @If(@Contains(StatusDescr_T;"Distributed")) &

                        !@If(@Contains(StatusDescr_T;"Accepted")) &

                        !@If(@Contains(StatusDescr_T;"Rejected NOK"));



SELECT Form="CatalogAlertImport_D"  & TempShowStatus

Axel:
Hi,

wie ist denn die Ansicht aufgebaut? Hat sie viele Kategorien?


Axel

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln