For the complete documentation index, see llms.txt. This page is also available as Markdown.

Optimiere die Performance deiner App

Erfahre, wie du die Performance deiner Ninox App mit effizienten Abfragen, Triggern und Datenverarbeitung optimierst.

Die folgenden Best Practices sind zentrale Empfehlungen, die sich bewährt haben. Sie behandeln häufige Stolperfallen wie ineffizienten Datenzugriff, unerwünschte Trigger-Kaskaden und rechenintensive Schleifen. Wenn du diese Richtlinien konsequent anwendest, kannst du Ladezeiten reduzieren und Systemressourcen schonen.

Startansichten für große Tabellen optimieren

Filtere bei großen Tabellen die Startansicht so, dass sie nur eine relevante Teilmenge der Datensätze zeigt. Zeige nur die benötigten Datensätze an. Das verbessert die Ladezeit erheblich und erleichtert die Nutzung.

Trigger-Konflikte und Zyklen vermeiden

Stelle sicher, dass Trigger unabhängig arbeiten und sich nicht gegenseitig beeinflussen. Vermeide besonders Konfigurationen, die zyklische Referenzen oder unbeabsichtigte Trigger-Schleifen erzeugen können. Diese können zu unvorhersehbarem Verhalten und Performance-Problemen führen.

Select-Statements sparsam verwenden

Verwende select-Statements nur, wenn sie unbedingt notwendig sind. Wenn Referenzen auf die Zieltabelle bereits vorhanden sind, nutze diese. Greife bei zugehörigen Daten in Untertabellen mit der Punktnotation statt mit select-Statements zu. Das verbessert die Performance und hält die Logik klar.

❌ Vermeide:

sum((select rechnungspositionen where rechnung = i).netto_gesamt)

✅ Verwende stattdessen:

let me := this;
sum((rechnungspositionen[rechnung = me]).netto_gesamt)

select-Statements in Logikfeldern minimieren

Vermeide nach Möglichkeit select-Statements in Logikfeldern, die in Tabellen- oder Formularansichten angezeigt werden. Wenn ein select-Statement erforderlich ist, definiere Bedingungen mit der where-Klausel statt mit eckigen Klammern [...].

Wiederholte select-Ausführungen vermeiden

Wenn ein select-Statement in einem Skript erforderlich ist, führe es nur einmal aus und speichere das Ergebnis in einer Variablen. Verwende diese Variable erneut, um bei Bedarf auf mehrere Felder zuzugreifen. Das verbessert die Performance und reduziert überflüssige Datenbankoperationen.

select-Statements in verschachtelten Schleifen vermeiden

Vermeide nach Möglichkeit select-Statements in verschachtelten Schleifen. Dieses Muster kann durch wiederholten Datenbankzugriff erhebliche Performance-Einbußen verursachen. Rufe die Daten stattdessen vorab ab und verwende zwischengespeicherte Daten.

Statische Werte dem wiederholten Berechnen von Logik vorziehen

Berechne Logik nicht jedes Mal dynamisch neu. Schreibe stattdessen statische Werte mit Triggern in Datenfelder, wenn das sinnvoll und vorteilhaft ist. Das reduziert den Verarbeitungsaufwand und verbessert die Performance deiner App.

Suchen in Tabellenansichten aus Dashboard-Formularansichten optimieren

Definiere bei Suchen in Tabellenansichten über eine Formularansicht oder Seite alle Variablen mit let, bevor du die Suche mit einem select-Statement ausführst. Begrenze die Ergebnisse, damit keine unnötigen Daten geladen werden. Verwende außerdem den Befehl not, um leere Suchfelder korrekt zu behandeln und präzise zu filtern.

Große Textblöcke nicht in Textfeldern speichern

Speichere große Inhalte nicht direkt in Text- oder HTML-Feldern. Dazu gehören beispielsweise CSV-Dateien, Base64-Dateien oder JSON-Payloads für API-Calls. Da Ninox jede Änderung protokolliert, kann der Änderungsverlauf dadurch sehr groß werden und die Performance beeinträchtigen. Erstelle solche Inhalte stattdessen mit createTextFile() und speichere sie als Anhang.

Du kannst dann über die API oder mit der folgenden Funktion auf die Datei zugreifen:

Indizierung gezielt verwenden

Wende Indizierung nur auf Felder an, die häufig durchsucht werden und von einem schnelleren Zugriff profitieren. Felder mit wenigen möglichen Werten, wie Ja/Nein-Felder, benötigen normalerweise keine Indizierung. Weitere Informationen findest du unter Indexfelder für schnellere Filter und Suchen.

Zuletzt aktualisiert

War das hilfreich?