14. Apr. 2025·7 Min. Lesezeit

Indexierung fĂŒr Admin-Panels: Zuerst die meistgenutzten Filter optimieren

Indexierung fĂŒr Admin-Panels: Optimieren Sie die Filter, die Nutzer am hĂ€ufigsten anklicken – Status, Bearbeiter, Datumsbereiche und Textsuche – basierend auf realen Abfragemustern.

Indexierung fĂŒr Admin-Panels: Zuerst die meistgenutzten Filter optimieren

Warum Filter in Admin-Panels langsam werden

Admin-Panels wirken anfangs oft schnell. Sie öffnen eine Liste, scrollen, klicken einen Datensatz an und machen weiter. Die Verlangsamung zeigt sich, wenn Leute filtern, wie sie tatsĂ€chlich arbeiten: „Nur offene Tickets“, „ZustĂ€ndig: Maya“, „Erstellt letzte Woche“, „Bestellnummer enthĂ€lt 1047“. Jeder Klick löst eine Wartezeit aus und die Liste wirkt klebrig.

Dasselbe Table kann fĂŒr einen Filter schnell und fĂŒr einen anderen quĂ€lend langsam sein. Ein Statusfilter kann nur einen kleinen Ausschnitt der Zeilen berĂŒhren und schnell zurĂŒckgeben. Ein „zwischen zwei Daten erstellt“-Filter kann die Datenbank zwingen, einen großen Bereich zu lesen. Ein Assignee-Filter kann alleine gut laufen und langsamer werden, sobald Sie ihn mit Status und Sortierung kombinieren.

Indizes sind die AbkĂŒrzung, die eine Datenbank verwendet, um passende Zeilen zu finden, ohne die ganze Tabelle zu lesen. Indizes sind aber nicht kostenfrei. Sie brauchen Platz und machen EinfĂŒgungen und Updates etwas langsamer. Zu viele Indizes können SchreibvorgĂ€nge verlangsamen und trotzdem das eigentliche Nadelöhr nicht beheben.

Statt alles zu indexieren, priorisieren Sie die Filter, die:

  • stĂ€ndig genutzt werden
  • viele Zeilen betreffen
  • spĂŒrbare Wartezeiten erzeugen
  • sich mit einfachen, passenden Indizes sicher verbessern lassen

Das bleibt absichtlich eng gefasst. Die ersten Performance-Beschwerden in Admin-Listen kommen fast immer von denselben vier Filtertypen: Status, Bearbeiter, Datumsbereiche und Textfelder. Wenn Sie verstehen, warum sich diese unterschiedlich verhalten, sind die nĂ€chsten Schritte klar: schauen Sie sich reale Abfragemuster an, fĂŒgen Sie den kleinsten Index hinzu, der dazu passt, und prĂŒfen Sie, ob Sie den langsamen Pfad verbessert haben, ohne neue Probleme zu schaffen.

Die Abfragemuster hinter echter Admin-Arbeit

Admin-Panels sind selten wegen eines riesigen Reports langsam. Sie werden langsam, weil ein paar Bildschirme den ganzen Tag benutzt werden und diese Bildschirme viele kleine Abfragen immer wieder ausfĂŒhren.

Ops-Teams leben meist in einer Handvoll Work-Queues: Tickets, Bestellungen, Nutzer, Genehmigungen, interne Anfragen. Auf diesen Seiten wiederholen sich die Filter:

  • Status, weil er den Workflow abbildet (Neu, Offen, Ausstehend, Erledigt)
  • Bearbeiter, weil Teams „meine Items“ und „unzugewiesen“ brauchen
  • Datumsbereiche, weil immer jemand fragt „was ist letzte Woche passiert?"
  • Suche, entweder um zu einem bekannten Eintrag zu springen (Bestellnummer, E-Mail) oder um Text zu scannen (Notizen, Vorschauen)

Die Datenbankarbeit hÀngt von der Absicht ab:

  • Browse newest ist ein Scan-Muster. Meist sieht das so aus: „zeige die neuesten EintrĂ€ge, vielleicht auf einen Status eingeschrĂ€nkt, sortiert nach Erstellungszeit“ und es ist paginiert.
  • Find a specific item ist ein Lookup-Muster. Der Admin hat bereits eine ID, E-Mail, Ticketnummer oder Referenz und erwartet, dass die Datenbank direkt zu einer kleinen Menge Zeilen springt.

Admin-Panels kombinieren Filter auch auf vorhersehbare Weise: „Offen + Unzugewiesen“, „Ausstehend + Mir zugewiesen“ oder „Abgeschlossen in den letzten 30 Tagen“. Indizes funktionieren am besten, wenn sie zu diesen realen Abfrageformen passen, nicht nur zu einer Liste von Spalten.

Wenn Sie Admin-Tools in AppMaster bauen, sind diese Muster oft sichtbar, wenn Sie sich die meistgenutzten Listenbildschirme und ihre Standardfilter anschauen. So lÀsst sich gezielt auf das indexieren, was den tÀglichen Ablauf antreibt, statt auf das, was auf dem Papier gut aussieht.

Wie Sie auswÀhlen, was zuerst zu indexieren ist

Behandeln Sie Indexierung wie Triage. Beginnen Sie nicht damit, jede Spalte zu indexieren, die in einem Filter-Dropdown erscheint. Starten Sie mit den wenigen Abfragen, die stÀndig laufen und die Leute am meisten nerven.

Finden Sie die Filter, die Leute tatsÀchlich nutzen

Optimierung eines Filters, den niemand anfasst, ist verschwendete Arbeit. Um die echten Hot Paths zu finden, kombinieren Sie Signale:

  • UI-Analytics: Welche Bildschirme werden am hĂ€ufigsten angesehen, welche Filter oft angeklickt
  • Datenbank- oder API-Logs: hĂ€ufigste Abfragen und die langsamsten Prozentpunkte
  • Internes Feedback: „Suche ist langsam“ weist meist auf einen konkreten Bildschirm hin
  • Die Standard-Listenansicht: was lĂ€uft genau beim Öffnen des Admin-Panels

In vielen Teams ist diese Standardansicht etwas wie „Offene Tickets“ oder „Neue Bestellungen“. Sie lĂ€uft jedes Mal, wenn jemand aktualisiert, Tabs wechselt oder nach einer Antwort zurĂŒckkehrt.

Gruppieren Sie Abfragen nach Form, nicht nach Feldname

Bevor Sie einen Index hinzufĂŒgen, gruppieren Sie Ihre hĂ€ufigen Abfragen nach ihrem Verhalten. Die meisten Admin-Listenabfragen fallen in ein paar Buckets:

  • Gleichheitsfilter: status = 'open', assignee_id = 42
  • Bereichsfilter: created_at zwischen zwei Daten
  • Sortierung und Paginierung: ORDER BY created_at DESC und Seite 2 holen
  • Textsuchen: exakter Treffer (Bestellnummer), Prefix-Suche (E-Mail beginnt mit), oder Contains-Suche

Schreiben Sie die Form fĂŒr jeden Top-Bildschirm auf, inklusive WHERE, ORDER BY und Paginierung. Zwei Abfragen, die in der UI Ă€hnlich aussehen, können sich in der Datenbank sehr unterschiedlich verhalten.

WĂ€hlen Sie eine kleine Anfangsgruppe

Starten Sie mit einem PrioritĂ€tsziel: der Standard-Listenabfrage, die zuerst lĂ€dt. WĂ€hlen Sie dann 2–3 weitere hĂ€ufige Abfragen. Das reicht meist, um die grĂ¶ĂŸten Verzögerungen zu reduzieren, ohne Ihre Datenbank in ein Indexmuseum zu verwandeln.

Beispiel: Ein Support-Team öffnet eine Tickets-Liste gefiltert auf status = 'open', sortiert nach neuesten, mit optionalem Bearbeiter und Datumsbereich. Optimieren Sie genau diese Kombination zuerst. Wenn das schnell ist, gehen Sie zum nÀchsten Bildschirm nach Nutzung.

Status-Filter indexieren, ohne zu ĂŒbertreiben

Status ist einer der ersten Filter, die man hinzufĂŒgt, und einer der einfachsten, falsch zu indexieren.

Die meisten Status-Felder haben eine geringe KardinalitĂ€t: nur wenige Werte (open, pending, closed). Ein Index hilft vor allem, wenn er die Ergebnisse auf einen kleinen Teil der Tabelle eingrenzt. Wenn 80–95 % der Zeilen denselben Status haben, Ă€ndert ein reiner status-Index oft nicht viel. Die Datenbank muss dann trotzdem einen großen Teil der Zeilen lesen, und der Index verursacht Overhead.

Der Nutzen zeigt sich meist, wenn:

  • ein Status selten ist (z. B. escalated)
  • Status mit einer anderen Bedingung kombiniert wird, die die Ergebnismenge klein macht
  • Status plus Sortierung einer hĂ€ufigen Listenansicht entspricht

Ein hĂ€ufiges Muster ist „zeige mir offene Items, neueste zuerst." In diesem Fall ist das Indexieren der Filterung zusammen mit der Sortierung oft wirkungsvoller als ein reiner status-Index.

Kombinationen, die sich zuerst auszahlen:

  • status + updated_at (Filter nach Status, Sortierung nach jĂŒngsten Änderungen)
  • status + assignee_id (Work-Queue-Ansichten)
  • status + updated_at + assignee_id (nur wenn diese exakte Ansicht stark genutzt wird)

Partielle Indizes sind ein guter Kompromiss, wenn ein Status dominiert. Wenn „open“ die Hauptansicht ist, indexieren Sie nur offene Zeilen. Der Index bleibt kleiner und die Schreibkosten bleiben niedriger.

-- PostgreSQL example: index only open rows, optimized for newest-first lists
CREATE INDEX CONCURRENTLY tickets_open_updated_idx
ON tickets (updated_at DESC)
WHERE status = 'open';

Ein praktischer Test: FĂŒhren Sie die langsame Admin-Abfrage mit und ohne Statusfilter aus. Wenn sie in beiden FĂ€llen langsam ist, rettet ein reiner Status-Index sie nicht. Konzentrieren Sie sich auf die Sortierung und den zweiten Filter, der die Liste wirklich verkleinert.

Assignee-Filter: Gleichheitsindizes und gÀngige Kombinationen

Daten und UI gemeinsam gestalten
Entwerfen Sie Daten, UI und Logik gemeinsam, damit Performance-Optimierungen an realer Nutzung ausgerichtet bleiben.
App erstellen

In den meisten Admin-Panels ist der Bearbeiter eine Nutzer-ID auf dem Datensatz: ein FremdschlĂŒssel wie assignee_id. Das ist ein klassischer Gleichheitsfilter und oft ein schneller Gewinn mit einem einfachen Index.

Der Bearbeiter tritt auch zusammen mit anderen Filtern auf, weil er die Arbeitsweise abbildet. Ein Support-Lead filtert vielleicht auf „Assigned to Alex“ und verengt dann auf „Open“, um zu sehen, was noch zu tun ist. Wenn diese Ansicht langsam ist, brauchen Sie oft mehr als einen Einzelspalten-Index.

Ein guter Ausgangspunkt ist ein zusammengesetzter Index, der zu der ĂŒblichen Filterkombination passt:

  • (assignee_id, status) fĂŒr „meine offenen Items"
  • (assignee_id, status, updated_at) wenn die Liste zusĂ€tzlich nach AktivitĂ€t sortiert wird

Die Reihenfolge ist wichtig in zusammengesetzten Indizes. Stellen Sie Gleichheitsfilter zuerst (oft assignee_id, dann status) und die Sortier- oder Bereichsspalte zuletzt (updated_at). So kann die Datenbank den Index effizient nutzen.

Unzugewiesene Items sind ein hĂ€ufiger Stolperstein. Viele Systeme reprĂ€sentieren „unassigned“ als NULL in assignee_id, und Manager filtern hĂ€ufig danach. AbhĂ€ngig von Ihrer Datenbank und dem Abfrageverhalten können NULL-Werte den Plan so Ă€ndern, dass ein fĂŒr zugewiesene Items guter Index fĂŒr Unzugewiesene nutzlos wirkt.

Wenn unzugewiesen ein wichtiger Workflow ist, wÀhlen und testen Sie eine klare Strategie:

  • assignee_id nullable lassen, aber WHERE assignee_id IS NULL gezielt testen und bei Bedarf indexieren.
  • Einen dedizierten Wert (z. B. speziellen „Unassigned“-User) nutzen, wenn es in Ihr Datenmodell passt.
  • Einen partiellen Index fĂŒr unzugewiesene Zeilen anlegen, wenn Ihre Datenbank das unterstĂŒtzt.

Wenn Sie ein Admin-Panel in AppMaster bauen, hilft es, die genauen Filter und Sortierungen zu protokollieren, die Ihr Team am hĂ€ufigsten nutzt, und diese Muster mit einer kleinen Menge gut gewĂ€hlter Indizes zu spiegeln, anstatt jede verfĂŒgbare Spalte zu indexieren.

Datumsbereiche: Indizes passend zur Filterpraxis

Logik ohne Extra-Code erstellen
FĂŒgen Sie GeschĂ€ftslogik mit Drag-and-Drop-Workflows hinzu, statt benutzerdefinierte Endpunkte per Hand zu verkabeln.
AppMaster testen

Datumsfilter treten meist als schnelle Presets wie „letzte 7 Tage“ oder „letzte 30 Tage“ auf, plus ein individueller Picker mit Start- und Enddatum. Sie wirken simpel, können aber auf großen Tabellen sehr unterschiedliche Datenbankarbeit auslösen.

Zuerst: Seien Sie klar, auf welche Timestamp-Spalte sich die Nutzer wirklich beziehen. Verwenden Sie:

  • created_at fĂŒr „neue Items“-Ansichten
  • updated_at fĂŒr „kĂŒrzlich geĂ€ndert“-Ansichten

Legen Sie einen normalen B-Tree-Index auf diese Spalte. Ohne ihn kann jeder „letzte 30 Tage“-Klick in einen Full Table Scan ausarten.

Preset-Bereiche sehen oft so aus: created_at >= now() - interval '30 days'. Das ist eine Bereichsbedingung, und ein Index auf created_at kann effizient genutzt werden. Wenn die UI zusÀtzlich nach neuesten EintrÀgen sortiert, kann das Abstimmen der Sortierrichtung (z. B. created_at DESC in PostgreSQL) bei vielgenutzten Listen helfen.

Wenn Datumsbereiche mit anderen Filtern (Status, Bearbeiter) kombiniert werden, seien Sie selektiv. Zusammengesetzte Indizes lohnen sich, wenn die Kombination hÀufig ist. Andernfalls erhöhen sie nur die Schreibkosten ohne Nutzen.

Praktische Regeln:

  • Wenn die meisten Ansichten zuerst nach Status und dann nach Datum filtern, kann (status, created_at) helfen.
  • Wenn Status optional, Datum aber immer vorhanden ist, belassen Sie es bei einem einfachen created_at-Index und vermeiden Sie viele Kombinationen.
  • Erstellen Sie nicht jede mögliche Kombination. Jeder neue Index erhöht Speicherplatz und verlangsamt SchreibvorgĂ€nge.

Zeitzonen und Grenzen verursachen viele „fehlende DatensĂ€tze“-Bugs. Wenn Nutzer nur ein Datum (ohne Zeit) wĂ€hlen, entscheiden Sie, wie das Enddatum interpretiert wird. Ein sicheres Muster ist inklusiver Start und exklusives Ende: created_at >= start und created_at < end_next_day. Speichern Sie Timestamps in UTC und konvertieren Sie Benutzereingaben vor der Abfrage in UTC.

Beispiel: Ein Ops-Admin wÀhlt 10. Jan bis 12. Jan und erwartet Items vom ganzen 12. Jan. Wenn Ihre Abfrage <= '2026-01-12 00:00' verwendet, fallen fast alle EintrÀge vom 12. Jan heraus. Der Index ist in Ordnung, aber die Grenzlogik falsch.

Textfelder: exakte Suche vs. Contains-Suche

Textsuche ist der Punkt, an dem viele Admin-Panels langsamer werden, weil Nutzer ein Feld erwarten, das „alles findet“. Die erste Abhilfe ist, zwei BedĂŒrfnisse zu trennen: exakter Treffer (schnell und vorhersehbar) vs. Contains-Suche (flexibel, aber schwerer).

Exakte Treffer-Felder sind Bestell-ID, Ticketnummer, E-Mail, Telefon oder externe Referenzen. Diese eignen sich perfekt fĂŒr normale Datenbankindizes. Wenn Admins oft eine ID oder E-Mail einfĂŒgen, macht ein einfacher Index plus Gleichheitsabfrage das Erlebnis instant.

Contains-Suche ist, wenn jemand ein Fragment tippt wie „refund“ oder „john“ und Treffer in Namen, Notizen und Beschreibungen erwartet. Das wird oft mit LIKE %term% umgesetzt. Das fĂŒhrende Wildcard verhindert die Nutzung eines normalen B-Tree-Index, also scannt die Datenbank viele Zeilen.

Praktische AnsĂ€tze fĂŒr Suche, ohne die DB zu ĂŒberlasten:

  • Machen Sie exakte Suche (ID, E-Mail, Benutzername) erstklassig und klar beschriftet.
  • FĂŒr „beginnt mit“-Suche (term%) kann ein Standardindex helfen und ist oft ausreichend fĂŒr Namen.
  • FĂŒgen Sie Contains-Suche nur hinzu, wenn Logs oder Beschwerden zeigen, dass sie nötig ist.
  • Wenn Sie sie hinzufĂŒgen, nutzen Sie das richtige Werkzeug (PostgreSQL Full-Text-Search oder Trigram-Index), statt zu hoffen, ein normaler Index löst LIKE %term%.

Eingaberegeln sind wichtiger, als viele Teams erwarten. Sie reduzieren Last und machen Ergebnisse konsistent:

  • MindestlĂ€nge fĂŒr Contains-Suche setzen (z. B. 3+ Zeichen).
  • Groß-/Kleinschreibung normalisieren oder immer case-insensitive vergleichen.
  • FĂŒhrende und folgende Leerzeichen trimmen und wiederholte Leerzeichen zusammenfassen.
  • E-Mails und IDs standardmĂ€ĂŸig als exakt behandeln, auch wenn sie in ein allgemeines Suchfeld eingegeben werden.
  • Wenn ein Suchbegriff zu breit ist, fordern Sie den Nutzer auf, genauer zu werden, statt eine riesige Abfrage zu starten.

Kleines Beispiel: Ein Support-Manager sucht „ann“ nach einem Kunden. Wenn das System LIKE %ann% ĂŒber Notizen, Namen und Adressen laufen lĂ€sst, scannt es tausende DatensĂ€tze. PrĂŒfen Sie zuerst exakte Felder (E-Mail oder Kunden-ID) und greifen Sie nur bei Bedarf auf eine intelligentere Textsuche zurĂŒck.

Ein schrittweises Vorgehen, um Indizes sicher hinzuzufĂŒgen

Verwandeln Sie Filter in echte Bildschirme
Modellieren Sie Ihre Tabellen in PostgreSQL und liefern Sie Listenansichten, die zur Arbeitsweise Ihrer Teams passen.
Jetzt bauen

Indizes sind leicht hinzuzufĂŒgen und leicht zu bereuen. Ein sicherer Workflow hĂ€lt Sie auf die Filter fokussiert, auf die Ihre Admins angewiesen sind, und hilft, „vielleicht nĂŒtzlich“-Indizes zu vermeiden, die spĂ€ter Schreiboperationen verlangsamen.

Starten Sie mit echter Nutzung. Ziehen Sie die Top-Abfragen in zwei Kategorien:

  • am hĂ€ufigsten genutzte Abfragen
  • am langsamsten laufende Abfragen

Bei Admin-Panels sind das meist Listen-Seiten mit Filtern und Sortierung.

Erfassen Sie als NÀchstes die Abfrageform genau so, wie die Datenbank sie sieht. Notieren Sie das prÀzise WHERE und ORDER BY, inklusive Sortierrichtung und gÀngiger Kombinationen (z. B. status = 'open' AND assignee_id = 42 ORDER BY created_at DESC). Kleine Unterschiede können entscheiden, welcher Index hilft.

Nutzen Sie eine einfache Schleife:

  • WĂ€hlen Sie eine langsame Abfrage und eine IndexĂ€nderung.
  • FĂŒgen Sie einen Index hinzu oder passen Sie ihn an.
  • Messen Sie erneut mit denselben Filtern und derselben Sortierung.
  • PrĂŒfen Sie, ob EinfĂŒgungen und Updates spĂŒrbar langsamer wurden.
  • Behalten Sie die Änderung nur, wenn sie die Zielabfrage klar verbessert.

Paginierung verdient einen eigenen Check. Offset-basierte Paginierung (OFFSET 20000) wird oft langsamer, je tiefer Sie gehen, selbst mit Indizes. Wenn Nutzer oft sehr tiefe Seiten aufrufen, erwĂ€gen Sie Cursor-Paginierung („zeige Items vor diesem Timestamp/ID“), damit der Index konsistent arbeitet.

Behalten Sie abschließend eine kleine Dokumentation, damit Ihre Indexliste Monate spĂ€ter noch verstĂ€ndlich ist: Indexname, Tabelle, Spalten (und Reihenfolge) und die Abfrage, die er unterstĂŒtzt.

HĂ€ufige Indexierungsfehler in Admin-Panels

Vom Prototyp zur Produktion
Erstellen Sie produzierbare Web- und Mobile-Apps mit sauberem, regenerierbarem Quellcode.
Jetzt ausprobieren

Der schnellste Weg, ein Admin-Panel langsam zu machen, ist Indizes hinzuzufĂŒgen, ohne zu prĂŒfen, wie Menschen tatsĂ€chlich filtern, sortieren und durch Ergebnisse blĂ€ttern. Indizes kosten Platz und Arbeit bei jedem Insert und Update.

HĂ€ufige Fehler

Diese Muster verursachen die meisten Probleme:

  • Jede Spalte „just in case“ indexieren.
  • Zusammengesetzten Index mit falscher Spaltenreihenfolge erstellen.
  • Sortierung und Paginierung ignorieren.
  • Erwarten, dass ein normaler Index LIKE '%term%' behebt.
  • Alte Indizes nach UI-Änderungen nicht entfernen.

Ein hĂ€ufiges Szenario: Ein Support-Team filtert Tickets auf Status = Open, sortiert nach updated_at und blĂ€ttert durch Ergebnisse. Wenn Sie nur status indexieren, muss die Datenbank trotzdem alle offenen Tickets sammeln und sortieren. Ein Index, der Filter und Sortierung zusammen abdeckt, kann Seite 1 schnell zurĂŒckgeben.

Schnellchecks, um Probleme zu finden

Vor und nach UI-Änderungen machen Sie eine kurze ÜberprĂŒfung:

  • Listen Sie Top-Filter und die Standard-Sortierung auf und prĂŒfen Sie, ob ein Index das WHERE + ORDER BY-Muster abdeckt.
  • PrĂŒfen Sie auf fĂŒhrende Wildcards (LIKE '%term%') und entscheiden Sie, ob Contains-Suche wirklich nötig ist.
  • Suchen Sie nach doppelten oder sich ĂŒberschneidenden Indizes.
  • Protokollieren Sie ungenutzte Indizes eine Weile und entfernen Sie sie, wenn sie nicht gebraucht werden.

Wenn Sie Admin-Panels in AppMaster auf PostgreSQL bauen, machen Sie diese PrĂŒfung beim Ausrollen neuer Bildschirme zum Standard. Die richtigen Indizes ergeben sich meist direkt aus den Filtern und Sortierregeln, die Ihre UI nutzt.

Schnelle Checks und nÀchste Schritte

Bevor Sie weitere Indizes hinzufĂŒgen, vergewissern Sie sich, dass die vorhandenen Indizes die genauen Filter unterstĂŒtzen, die Ihre Leute tĂ€glich nutzen. Ein gutes Admin-Panel fĂŒhlt sich auf den hĂ€ufigen Pfaden sofort an, nicht bei seltenen One-off-Suchen.

Einige Checks fangen die meisten Probleme ein:

  • Öffnen Sie die hĂ€ufigsten Filterkombinationen (Status, Bearbeiter, Datumsbereich und Standard-Sortierung) und bestĂ€tigen Sie, dass sie beim Wachsen der Tabelle schnell bleiben.
  • PrĂŒfen Sie fĂŒr jede langsame Ansicht, ob die Abfrage einen Index nutzt, der sowohl WHERE als auch ORDER BY abdeckt, nicht nur einen Teil.
  • Halten Sie die Indexliste klein genug, dass Sie in einem Satz erklĂ€ren können, wofĂŒr jeder Index da ist.
  • Beobachten Sie schreibintensive Aktionen (Erstellen, Aktualisieren, Statuswechsel). Wenn diese nach dem Indexieren langsamer werden, haben Sie wahrscheinlich zu viele oder ĂŒberlappende Indizes.
  • Legen Sie fest, was „Suche“ in Ihrer UI bedeutet: exakter Treffer, Prefix oder Contains. Ihr Indexplan muss diese Wahl widerspiegeln.

Ein praktischer nĂ€chster Schritt ist, Ihre Goldpfade als einfache SĂ€tze aufzuschreiben, z. B.: „Support-Agenten filtern offene Tickets, mir zugewiesen, letzte 7 Tage, sortiert nach Neuestem.“ Verwenden Sie diese SĂ€tze, um eine kleine Menge Indizes zu entwerfen, die sie klar unterstĂŒtzen.

Wenn Sie noch frĂŒh in der Entwicklung sind, hilft es, Ihre Datenstruktur und Standardfilter zu modellieren, bevor Sie zu viele Bildschirme erstellen. Mit AppMaster (appmaster.io) können Sie Admin-Views schnell iterieren und dann die wenigen Indizes hinzufĂŒgen, die aus realer Nutzung als notwendig hervorgehen.

FAQ

What should I index first in an admin panel?

Beginnen Sie mit den Abfragen, die stĂ€ndig laufen: die Standard-Listenansicht, die Admins zuerst sehen, plus die 2–3 Filter, die sie den ganzen Tag anklicken. Messen Sie Frequenz und Schmerz (hĂ€ufigste und langsamste Abfragen) und indexieren Sie nur, was die Wartezeit bei diesen genauen Abfrageformen deutlich reduziert.

Why is one filter fast but another painfully slow on the same table?

Weil unterschiedliche Filter unterschiedliche Arbeit erzeugen. Manche Filter schrĂ€nken das Ergebnis auf wenige Zeilen ein, andere berĂŒhren große Bereiche oder erfordern das Sortieren großer Ergebnismengen. Eine Abfrage kann also einen Index gut nutzen, wĂ€hrend eine andere trotzdem viel Scannen und Sortieren braucht.

Should I always add an index on a status column?

Nicht immer. Wenn der Großteil der Zeilen denselben Status hat, bringt ein reiner status-Index oft kaum Verbesserung. Ein Index hilft eher, wenn der Status selten ist oder wenn Sie Status zusammen mit der Sortierung oder einem anderen Filter indexieren, der die Ergebnisse wirklich einschrĂ€nkt.

How do I speed up the common “Open items, newest first” view?

Verwenden Sie einen zusammengesetzten Index, der dem tatsÀchlichen Verhalten entspricht, z. B. Filter nach Status und Sortierung nach letzter AktivitÀt. In PostgreSQL kann ein partieller Index eine saubere Lösung sein, wenn ein Status dominiert, weil der Index klein bleibt und die Schreibkosten geringer sind.

What’s the best way to index assignee filtering?

Ein einfacher Index auf assignee_id ist oft ein schneller Gewinn, weil es eine Gleichheitsbedingung ist. Wenn „meine offenen Items“ wichtig ist, ist ein zusammengesetzter Index mit assignee_id zuerst und dann status (und optional der Sortierspalte) meist besser als einzelne Einzelspalten-Indizes.

Why does filtering for “unassigned” items stay slow even after indexing assignee_id?

Unassigned wird hĂ€ufig als NULL gespeichert, und WHERE assignee_id IS NULL verhĂ€lt sich anders als WHERE assignee_id = 123. Wenn Unassigned-Queues wichtig sind, testen Sie diese Abfrage gezielt und nutzen Sie bei Bedarf eine Indexstrategie dafĂŒr, z. B. einen partiellen Index fĂŒr unzugewiesene Zeilen, falls Ihre Datenbank das unterstĂŒtzt.

How should I index date range filters like “last 7 days”?

Legen Sie einen B-Tree-Index auf die Timestamp-Spalte, die Nutzer tatsĂ€chlich filtern, typischerweise created_at fĂŒr „neue Items“ und updated_at fĂŒr „zuletzt geĂ€ndert“. Ohne Index kann ein „letzte 30 Tage“-Filter zu einem Full Table Scan werden. Wenn zusĂ€tzlich nach neusten EintrĂ€gen sortiert wird, kann eine auf die Sortierung abgestimmte Richtung helfen.

How do I avoid timezone and end-date bugs in admin date filters?

Die meisten fehlenden DatensÀtze kommen von falschen Datumsgrenzen, nicht von Indizes. Ein verlÀssliches Muster ist inklusiver Start und exklusives Ende: konvertieren Sie Benutzerzeiten in UTC und fragen Sie mit >= start und < end_next_day ab, damit Ereignisse am Enddatum nicht versehentlich ausgelassen werden.

Why doesn’t a normal index fix “contains” search in text fields?

Weil LIKE %term% einen fĂŒhrenden Wildcard hat und ein normaler B-Tree-Index dann nicht verwendet werden kann, was zu vielen Zeilen-Scans fĂŒhrt. Behandeln Sie exakte NachschlĂ€ge (ID, E-Mail, Bestellnummer) als erste, schnelle Option, und fĂŒgen Sie Contains-Suche nur bei Bedarf mit geeigneten Tools hinzu (z. B. Volltextsuche oder Trigramme in PostgreSQL).

Can I just index every filterable column to avoid slowdowns?

Zu viele Indizes erhöhen Speicherbedarf und verlangsamen EinfĂŒgungen und Updates; außerdem hilft ein Index nicht, wenn er nicht zum WHERE + ORDER BY-Muster passt. Ein sicherer Ablauf ist: jeweils nur einen Index Ă€ndern, dieselbe langsame Abfrage erneut messen und nur Änderungen beibehalten, die den Hot Path deutlich verbessern.

Wenn Sie Admin-Bildschirme in AppMaster bauen, protokollieren Sie die genauen Filter und Sortierungen Ihres Teams und fĂŒgen Sie nur eine kleine Menge an Indizes hinzu, die diese realen Ansichten widerspiegeln, statt jede verfĂŒgbare Spalte zu indexieren.

Einfach zu starten
Erschaffe etwas Erstaunliches

Experimentieren Sie mit AppMaster mit kostenlosem Plan.
Wenn Sie fertig sind, können Sie das richtige Abonnement auswÀhlen.

Starten
Indexierung fĂŒr Admin-Panels: Zuerst die meistgenutzten Filter optimieren | AppMaster