Tabellen-Ansichten
Die Performance von Tabellenansichten wird durch drei Faktoren beeinflusst:
- Die Komplexität der Abfrage (Filter)
- die Anzahl der zu ladenden Zeilen
- die Daten, die pro Zeile geladen werden
Ninox berechnet Ansichten in folgendem Ablauf:
- Frage vom Server alle Datensatz-IDs ab, die den Filterkriterien der Ansicht entsprechen.
- Lade alle Datensätze, die sich unmittelbar aus dieser Filterung ergeben, und (im selben Schritt) lade alle Datensätze, die voraussichtlich zur Berechnung der Spalten zusätzlich benötigt werden.
- Berechne alle Zeilen und Spalten.
Sehr viele Zeilen
Performance-Probleme treten in der Regel auf, wenn entweder die Anzahl der Zeilen (Ergebnis aus Schritt 1) sehr hoch ist, zum Beispiel 100.000 Zeilen oder mehr, oder wenn im Schritt 2 sehr viele zusätzliche Daten geladen werden.
Erstes lässt sich lösen, indem man die Datensätze stärker filtert – oft benötigen die Anwender nur aktuelle Daten, zum Beispiel die noch offenen Rechnungen, nur aktive Kunden oder Aufgaben, die nicht älter als zwei Wochen sind.
Sehr viele zusätzliche Datensätze werden geladen
In der Praxis häufiger zu sehen ist, dass berechnete Spalten eingeblendet sind, die Daten aus verknüpften Tabellen heranziehen. Wenn man zum Beispiel eine Tabellenansicht aller Kunden erstellt und in dieser Ansicht die Summe der Rechnungsbeträge einblendet, um den Gesamtumsatz pro Kunde anzuzeigen, wird Ninox in Schritt 2 auch alle Rechnungsdatensätze und alle Rechnungspositionen laden, um das Ergebnis berechnen zu können.
Dieses Problem kann man lösen, indem man entsprechenden Spalten ausblendet. Falls dies im Einzelfall nicht möglich ist, sollte die Ansicht noch stärker gefiltert werden - oder man ersetzt das berechnete Feld durch ein tatsächliches Datenfeld, in dem der Wert durch einen Trigger berechnet und gespeichert wird.
Komplexe Formeln
Verwandt mit vorhergehendem Fall ist die Situation, dass sehr komplexe Formeln in den Spalten der Ansicht hinterlegt sind. Um dies zu illustrieren:
Angenommen, eine Ansicht zeigt 1000 Zeilen. Eine der Spalten vergleicht einen Wert der Zeile mit 1000 Datensätzen aus einer anderen Tabelle. So ergeben sich schnell 1.000.000 Vergleiche, die Ninox berechnen muss, obwohl die Ansicht zunächst überschaubaren Umfang hatte.
Betrachten Sie dabei nicht nur die unmittelbare Formel, die angezeigt wird - eventuell nutzt die Formel weitere Formelfelder und die Komplexität ist über mehrere Ebenen verborgen.
"Sub-selects"
Ninox bietet im Umfang der Script-Sprache auch ein select-Statement. Die Berechnung von select kann Ninox nicht so gut optimieren, wie die Nutzung von Verknüpfungen. select sollte in Formeln von Tabellen-Ansichten nicht genutzt werden, da jede Zeile der Ansicht eine separate Abfrage auslöst.