Freigeben über


Optimierte Abfragedatenmuster

Das einfachste und schnellste Datenabfragemuster ist:

  1. Eine einzelne Tabelle oder Ansicht
  2. Auf das, was Sie brauchen, auf dem Server vorgefiltert
  3. Mit für die erwarteten Abfragen korrekt indizierten Spalten ausgestattet

Wenn Sie Ihre App entwerfen, müssen Sie darüber nachdenken, wie Sie Daten schnell abfragen können. Der beste Weg, Daten abzufragen, besteht darin, eine einzelne Tabelle oder Ansicht zu verwenden, die alle notwendigen Informationen enthält, und diese vor der Anzeige in Ihrer App auf dem Server zu filtern. Sie müssen außerdem sicherstellen, dass die Spalten, die Sie zum Filtern oder Sortieren der Daten verwenden, richtig indiziert sind. Dadurch läuft Ihre App schneller und flüssiger.

Angenommen, Sie verfügen über einen Katalog, der eine Liste von Kunden und deren Vertriebsmitarbeitenden zeigt. Wenn Sie die Informationen zu Kunden und Vertriebsmitarbeitenden in separaten Tabellen speichern, müssen Sie Suchvorgänge verwenden, um die Namen der Vertriebmitarbeitenden für die einzelnen Kunden zu ermitteln. Dies verlangsamt Ihre App, da viele Abfragen an die andere Tabelle ausgeführt werden müssen. Eine bessere Möglichkeit besteht darin, eine Ansicht zu erstellen, die die Informationen zu Kunden und Vertriebsmitarbeitenden in einer Tabelle vereint, und diese Ansicht als Datenquelle für Ihren Katalog zu verwenden. Dann muss Ihre App nur eine Abfrage ausführen, um alle benötigten Daten abzurufen.

Es gibt einen Kompromiss zwischen Abfragegeschwindigkeit und Datennormalisierung. Datennormalisierung bedeutet, dass Sie die Daten nur einmal speichern und Duplikate vermieden werden. Dies trägt dazu bei, dass die Daten konsistent und genau bleiben. Manchmal müssen Sie jedoch einige Daten duplizieren, um Abfragen schneller und einfacher zu gestalten. Sie müssen in Ihrem App-Design und Ihrer Tabellenstruktur ein Gleichgewicht zwischen diesen beiden Zielen finden. Andernfalls ist Ihre App langsam und reagiert nur mit Verzögerung, da sie zahlreiche Aufgaben ausführen muss, um die Daten aus verschiedenen Tabellen zu filtern und zusammenzuführen.

Serverseitige Ansichten verwenden

Ansichten sind wahrscheinlich das häufigste Instrument, um diese Ziele in Einklang zu bringen. Sie bieten eine einzelne Tabellenstruktur für Abfragen, filtern Daten auf das vor, was Sie mit der Abfrage suchen, und erlauben Suchvorgänge und Verknüpfungen mit anderen Tabellen. Da die Filter, Suchvorgänge und Verknüpfungen für die Ansicht auf dem Server berechnet werden, werden sowohl die Nutzdaten als auch die clientseitige Berechnung minimiert.

Ein Katalog kann viele Datensätze aus einer Datenquelle anzeigen. Aber manchmal müssen Sie zusätzliche Informationen von einer anderen Datenquelle anzeigen, die mit dem Original verknüpft sind. Angenommen Sie verfügen über einen Katalog, in dem eine Kundenliste angezeigt wird, und Sie möchten den Namen der Vertriebsmitarbeitenden anzeigen, die den einzelnen Kunden zugeordnet sind. Die Namen der Vertriebsmitarbeitenden werden in einer anderen Datenquelle gespeichert als die Informationen der Kunden. Um die Namen der Vertriebsmitarbeitenden anzuzeigen, müssen Sie eine Suchfunktion verwenden, die den passenden Datensatz in der anderen Datenquelle findet. Dadurch wird die Originaltabelle mit den Suchwerten erweitert.

Allerdings geht das Erweitern der Tabelle eventuell sehr langsam, wenn Sie viele Datensätze und viele Suchvorgänge haben. Die App muss für jeden Datensatz im Katalog eine separate Abfrage an die andere Datenquelle ausführen und den Suchwert abrufen. Dies bedeutet, dass die App möglicherweise viele Abfragen für jeden Datensatz ausführen muss, was lange dauern und sich auf die App-Leistung auswirken kann. Dieses Anti-Muster wird manchmal als „N im Quadrat, (n^2)“- oder „N+1“-Problem bezeichnet.

StartsWith oder Filter verwenden

Power Fx bietet verschiedene Möglichkeiten zum Durchsuchen von Daten. Verwenden Sie grundsätzlich einen Ausdruck, der einen Index wie z. B. StartsWith oder Filter anstelle eines wie In verwendet, der die gesamte Tabelle liest. Der In-Operator eignet sich gut für In-Memory-Sammlungen oder wenn die externe Datenquellentabelle sehr klein ist.

Daten unter Umständen duplizieren

Manchmal ist der Zugriff auf Daten in einer Abfrage langsam, weil sie an einem anderen Ort oder in einem anderen Format gespeichert sind. Um die Abfrage zu beschleunigen, können Sie die langsamen Daten kopieren und lokal in einer Tabelle speichern, die schnell und einfach abgefragt werden kann. Dies bedeutet jedoch, dass die lokalen Daten möglicherweise nicht die aktuellste Version der Originaldaten sind. Führen Sie dann einen weiteren Prozess aus, um die lokalen Daten regelmäßig zu aktualisieren. Bei diesem Prozess kann es sich um einen Power Automate-Flow, ein Plug-In, eine gespeicherte Prozedur oder jede andere Methode handeln, mit der Daten von einem Ort an einen anderen verschoben werden.

Die notwendige Frequenz der Aktualisierung der lokalen Daten hängt von Ihren Geschäftsanforderungen ab. Wie aktuell müssen die Daten für Ihre App sein? Angenommen, Sie arbeiten für Contoso, ein Unternehmen, das Fahrräder verkauft. Die Liste der verfügbaren Fahrräder wird in einer Produktdatenbank gespeichert, auf die Sie über eine API in einem benutzerdefinierten Connector zugreifen können. Angenommen, der API-Aufruf ist jedoch langsam, und Sie entscheiden sich, die Produktdaten zu kopieren und lokal in einer Tabelle zu speichern. Anschließend erstellen Sie eine Ansicht, die Ihre Tabelle für Ihre App mit anderen relevanten Daten kombiniert. Sie erstellen auch einen Power Automate-Flow, der täglich ausgeführt wird und Ihre Tabelle mit den neuesten Produktdaten aus der API aktualisiert. Dann kann Ihre App die lokalen Daten schneller abfragen und die Daten sind höchstens einen Tag alt.

Das Duplizieren von Daten ist eine gängige Technik in für Unternehmen geeignete Anwendungen, um eine gute Leistung sicherzustellen. Sie können Dataverse-Plug-Ins, gespeicherte Prozeduren oder Datenverschiebungen verwenden, um Daten in einer einzigen Tabelle zu duplizieren, die für Abfragen optimiert ist. Die entscheidende Frage ist: Wie aktuell müssen diese Daten sein? Wenn Sie sich eine gewisse Verzögerung leisten können, können Sie diese Technik verwenden, um Ihre App zu beschleunigen.

Vorschläge

Um dieses Ziel zu erreichen, berücksichtigen Sie die folgenden Fragen und Vorschläge:

  1. Wie wichtig ist es für einen Kunden, den Datenwert in einem Katalog oder Datenraster zu sehen? Wäre es akzeptabel, zuerst einen Datensatz auszuwählen und dann die Daten in einem Formular anzuzeigen?
  2. Kann eine Ansicht die erforderliche Vorarbeit leisten, um Daten im richtigen Format anzuzeigen?
  3. Verwenden Sie einen „IN“-Operator, bei dem ein „StartsWith“ funktioniert?
  4. Wie aktuell müssen Ihre Daten sein? Gibt es eine Strategie zur Datenduplizierung, mit der Sie Ihre Abfrage standardmäßig für eine einzelne Tabelle ausführen lassen können?