Bewährte Methoden zur Schemaoptimierung
Ein Tabellenschema definiert die Namen und Datentypen aller Spalten in der Tabelle. Das Tabellenschema kann während der Tabellenerstellung oder als Teil des Datenaufnahmeprozesses festgelegt werden, indem die entsprechende Erfassungszuordnung geändert wird. Die Art und Weise, wie ein Tabellenschema definiert wird, kann die Abfrageleistung erheblich beeinträchtigen. Das ideale Schema für Ihre Daten hängt von vielen Faktoren ab, einschließlich Anwendungsfall, Datenzugriffsmustern und den spezifischen Daten, die Sie speichern möchten. In diesem Artikel werden bewährte Methoden zur Leistungsoptimierung durch effizientere Schemas beschrieben.
Datentypen
Allgemeine Informationen zu Datentypen finden Sie unter skalare Datentypen.
Häufig verwendete Felder sollten Spalten mit Eingaben sein, nicht vom dynamischen Typ.
Nach häufig gesuchten oder aggregierten JSON-Eigenschaften in einer dynamischen Spalte sollten in eine normale Spalte in der Tabelle mit einem spezifischeren Typ wie Zeichenfolge, lang oder real konvertiert werden.
Sparsespalten, die nicht häufig für Filter und Aggregation verwendet werden, sollten als Eigenschaftenbehälter in einer dynamischen Spalte mithilfe der
DropMappedFields
Zuordnungstransformation gesammelt werden.Datums-/Uhrzeitspalten sollten als datetime eingegeben werden, und nicht als lang oder andere Datentypen.
- Verwenden Sie die DateTime aus Unix-Transformationszuordnungen wie z. B.
DateTimeFromUnixMilliseconds
. .
- Verwenden Sie die DateTime aus Unix-Transformationszuordnungen wie z. B.
Der Typ Dezimal bietet exakte Genauigkeit, wodurch er für finanzielle und andere Anwendungen am besten geeignet ist, die exakte Genauigkeit erfordern. Es ist jedoch viel langsamer als der Typ real. Verwenden Sie bei Bedarf nur den Dezimaltyp.
Alle ID-Spalten (Kennung) sollten als Zeichenfolge und nicht als numerisch eingegeben werden. Dieser Typ macht den Index wesentlich effektiver und kann die Suchzeit erheblich verbessern. Außerdem wird die Partitionierung aktiviert, da die Partitionierung nur für Zeichenfolgenspalten definiert werden kann. Wenn die in dieser Spalte verwendeten Abfragefilter nur Gleichheiten sind, z. B. wenn die Spalte guids enthält, können Sie das Codierungsprofil
Identifier
verwenden. Weitere Informationen finden Sie in der Codierungsrichtlinien.
Tabellen
- Optimieren Sie für schmale Tabellen, die gegenüber breiten Tabellen mit Hunderten von Spalten bevorzugt werden.
- Um teure Verknüpfungen während der Abfragezeit zu vermeiden, können Sie Dimensionsdaten durch Anreichern während der Erfassung denormalisieren. Wenn die für die Anreicherung verwendete Dimensionstabelle aktualisiert wird, und das Szenario den neuesten Wert erfordert, verwenden Sie Ansichten materialisieren , um nur den neuesten Wert beizubehalten.
- Wenn es mehr als 20 Sparsespalten gibt, was bedeutet, dass viele Werte NULL-Werte sind, und diese Spalten selten für Suchvorgänge oder Aggregation verwendet werden, gruppieren Sie die Spalten als JSON-Eigenschaftenbehälter in einer dynamischen Spalte mithilfe der
DropMappedFields
Transformationszuordnung.
Indizierung
Felder, die nie durchsucht werden, können die Indizierung deaktivieren. Verwenden Sie die Codierungsrichtlinie mit Profil BigObject
, um die Indizierung für Zeichenfolgen oder dynamische eingegebene Spalten zu deaktivieren.