Leistung in Abfrageobjekten optimieren

Abgeschlossen

Eine Abfrage ist ein Objekt in Dynamics 365 Business Central, das Sie verwenden, um einen Datensatz anzugeben, den Sie aus der Business Central-Datenbank lesen möchten. Sie können die Datenbank abfragen, um ein oder mehrere Felder aus einer einzelnen Tabelle oder mehreren Tabellen abzurufen. Sie können angeben, wie die Tabellen in der Abfrage verknüpft werden sollen. Sie können Summierungsmethoden für Felder angeben, z. B. Summen und Mittelwerte. In diesem Thema wird beschrieben, wie Sie Abfragen und Tabellenschlüssel auf die effizienteste Art und Weise entwerfen.

FlowFields in Abfragen

Der SQL-Anweisung wird automatisch eine Unterabfrage hinzugefügt, um jedes FlowField in einer Abfrage abzurufen. Dadurch kann Business Central alle Daten in einer Anfrage abrufen.

Sie können ein FlowField nicht für eine virtuelle Tabelle in einer Abfrage verwenden, da dies nicht automatisch in eine SQL-Anweisung konvertiert werden kann.

Indizes abdecken

Wenn Sie eine Abfrage verwenden, um eine Teilmenge von Feldern in einer Tabelle auszuwählen, sollten Sie die Vorteile der Strategie für den abdeckenden Index in Betracht ziehen. Ein Abdeckungsindex ist der Index, der alle Ausgabefelder enthält, die für die mit diesem Index durchgeführte Operation benötigt werden. Eine Strategie für den Zugriff auf Indexdaten kann die Leistung deutlich verbessern, da die Datenbank nur Daten aus dem Index abrufen muss, anstatt Daten mit dem Index zu finden und dann die Daten im geclusterten Index abzurufen. Eine Strategie für den Zugriff auf Indexdaten kann verwendet werden, wenn die folgenden Bedingungen erfüllt sind:

  • Alle Spalten in einem bestimmten Datenelement sind Teil eines einzelnen Business Central-Schlüssels.

  • Alle Spalten, die in den DataItem-Tabellenfiltern verwendet werden, sind Teil desselben Business Central-Schlüssels.

  • Wenn zwei Datenelemente verknüpft sind, muss das Feld im übergeordneten DataItem, das die beiden DataItems verknüpft (das Referenzfeld auf der Eigenschaft DataItemLink), Teil des gleichen Business Central-Schlüssels sein wie die Spalten im untergeordneten Datenelement.

Der SQL Server-Optimierer wählt nach Möglichkeit automatisch eine Deckungsindexstrategie aus.

Weitere Informationen zur SQL Server behandelten Indizes finden Sie unter SQL Server-Optimierung.

Weitere Informationen zu gruppierten und nicht gruppierten SQL Server-Indizes finden Sie unter Arten von Indizes.

SIFT-Indizes abdecken

Ähnlich wie Indizes zum Abrufen von Daten für eine Abfrage verwendet werden können, können SIFT-Indizes verwendet werden, um Daten für eine Abfrage abzurufen, die Summen enthält. SIFT-Summen werden nach jedem Einfüge-, Änderungs‑ oder Löschaufruf verwaltet, sodass einige oder alle Summen bereits berechnet wurden. Ein SIFT-Index kann verwendet werden, wenn die folgenden Bedingungen erfüllt sind:

  • Die Abfrage umfasst mindestens eine aggregierte Spalte mit dem MethodentypSummen und der MethodeSummeAnzahl oderDurchschnitt.

  • Wenn ein DataItem eine aggregierte Spalte umfasst, müssen alle Spalten unter diesem DataItem aggregierte Spalten sein, müssen entweder die Sum-, Count‑ oder Average-Methode verwenden und Teil eines SumIndexField sein, das für einen einzelnen Business Central-Schlüssel festgelegt ist.

  • Bei einer Abfrage, in der Sie Aggregationen haben, aber nicht für alle DataItems, sind die Spalten für die DataItems ohne Aggregationen Teil eines SumIndexField.

  • Alle nicht aggregierten Spalten unter dem DataItem, die eine Aggregation aufweisen, sind Teil der Schlüsselfelder, die für den gleichen SIFT-Index definiert sind.

  • Alle Spalten, die in den DataItem-Tabellenfiltern verwendet werden, sind Teil desselben Business Central-Schlüssels.

  • Wenn zwei Datenelemente verknüpft sind, muss das Feld im übergeordneten DataItem, das die beiden DataItems verknüpft (das Referenzfeld auf der Eigenschaft DataItemLink), Teil des gleichen Business Central-Schlüssels sein wie die Spalten im untergeordneten Datenelement.

Business Central Server verwendet, wann immer möglich, automatisch einen SIFT-Index für Abfrageobjekte.

Unterschiede zwischen Abfrage‑ und Datensatzergebnissen

Business Central führt keine Zwischenspeicherung für Sets von Abfrageergebnissen durch. Wenn Sie eine Abfrage ausführen, ruft Business Central die Daten immer direkt vom SQL Server ab.

Abfrageergebnisse sind nicht garantiert dynamisch, Datensatzergebnisse sind jedoch immer dynamisch. Wenn Sie also Daten in eine Ergebnissatzzeile einfügen oder ändern, die Sie noch nicht durchlaufen haben, kann nicht garantiert werden, dass die Ergebnismenge der Abfrage diese Änderungen enthält.

Ausgewählte Abfragehinweise aktivieren und deaktivieren

Der SQL Server-Abfrageoptimierer versucht, den besten Ausführungsplan für SELECT-, INSERT-, UPDATE‑ und DELETE-Anweisungen auszuwählen. In den meisten Fällen trifft der Abfrageoptimierer die richtige Auswahl. Abfragehinweise sind Strategien, die vom SQL Server-Abfrageprozessor durchgesetzt werden können, um jeden Ausführungsplan zu überschreiben, den der Abfrageoptimierer für eine Abfrage auswählen kann. Die Business Central Server-Instanz umfasst Konfigurationseinstellungen, mit denen Sie die Verwendung der ausgewählten Abfragehinweise in der Datenbank aktivieren oder deaktivieren können.

Weitere Informationen finden Sie unter Abfragehinweis zur Optimierung der SQL Server-Leistung mit Business Central konfigurieren.