

 Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im [Blog-Posting](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Bewährte Methoden für die Gestaltung von Tabellen mit Amazon Redshift
<a name="c_designing-tables-best-practices"></a>

Wenn Sie Ihre Datenbank planen, müssen Sie bestimmte wichtige Tabellengestaltungsentscheidungen treffen, die erheblichen Einfluss auf die allgemeine Abfrageleistung haben. Diese Entscheidungen haben auch große Auswirkungen auf die Speicheranforderungen, die wiederum die Abfrageanforderungen beeinflussen, indem sie die Anzahl der I/O-Operationen reduzieren und den für die Verarbeitung von Abfragen erforderlichen Speicherplatz minimieren.

In diesem Abschnitt finden Sie eine Übersicht der wichtigsten Gestaltungsentscheidungen und bewährte Methoden für die Optimierung der Abfrageleistung. [Aktivieren automatischer Tabellenoptimierung](t_Creating_tables.md) bietet ausführlichere Erläuterungen und Beispiele für die Tabellendesignoptionen.

**Topics**
+ [Auswahl des besten Sortierschlüssels](c_best-practices-sort-key.md)
+ [Auswahl des besten Verteilungsstils](c_best-practices-best-dist-key.md)
+ [Lassen Sie COPY die Kompressionskodierungen auswählen](c_best-practices-use-auto-compression.md)
+ [Definition von Primär- und Fremdschlüsseleinschränkungen](c_best-practices-defining-constraints.md)
+ [Verwendung der geringstmöglichen Spaltengröße](c_best-practices-smallest-column-size.md)
+ [date/time Datentypen für Datumsspalten verwenden](c_best-practices-timestamp-date-columns.md)

# Auswahl des besten Sortierschlüssels
<a name="c_best-practices-sort-key"></a>

Amazon Redshift speichert die Daten auf der Festplatte in sortierter Form gemäß dem Sortierschlüssel. Der Amazon-Redshift-Abfrageoptimierer verwendet die Sortierfolge bei der Bestimmung optimaler Abfragepläne. 

**Anmerkung**  
Wenn Sie die automatische Tabellenoptimierung verwenden, müssen Sie den Sortierschlüssel Ihrer Tabelle nicht auswählen. Weitere Informationen finden Sie unter [Aktivieren automatischer Tabellenoptimierung](t_Creating_tables.md).

Einige Vorschläge für den besten Ansatz folgen:
+ Damit Amazon Redshift die entsprechende Sortierreihenfolge auswählen kann, geben Sie `AUTO` für den Sortierschlüssel an. 
+ Wenn aktuelle Daten am häufigsten abgefragt werden, geben Sie die Zeitstempelspalte als führende Spalte für den Sortierschlüssel an. 

  Die Abfragen sind effizienter, weil sie gesamte Blöcke überspringen können, die außerhalb des Zeitraums liegen.
+ Wenn Sie häufig Bereichsfilterungen oder Gleichheitsfilterungen für eine Spalte durchführen, geben Sie diese Spalte als Sortierschlüssel an. 

   Amazon Redshift kann das Lesen gesamter Datenblöcke für diese Spalte überspringen. Dies ist möglich, weil es die minimalen und maximalen in jedem Block gespeicherten Spaltenwerte verfolgt und Blöcke überspringen kann, die dem Prädikatsbereich nicht entsprechen.
+ Wenn Sie häufig eine Tabelle zusammenführen (Join), geben Sie die Join-Tabelle als Sortierschlüssel und Verteilungsschlüssel an. 

  Dadurch kann der Abfrageoptimierer eine Sortier-/Zusammenführungs-Join-Operation anstelle einer langsameren Hash-Join-Operation wählen. Da die Daten bereits auf dem Join-Schlüssel sortiert sind, kann der Abfrageoptimierer die Sortierungsphase der Sortier-/Zusammenführungs-Join-Operation übergehen.

# Auswahl des besten Verteilungsstils
<a name="c_best-practices-best-dist-key"></a>

Wenn sie eine Abfrage ausführen, führt der Abfrageoptimierer nach Bedarf eine Neuverteilung der Zeilen zu den Datenverarbeitungsknoten durch, um Join- oder Aggregierungsoperationen durchführen zu können. Das Ziel der Auswahl eines Tabellenverteilungsstils besteht darin, die Auswirkungen des Neuverteilungsschritts dadurch zu minimieren, dass die Daten dort platziert werden, wo sie benötigt werden, bevor die Abfrage ausgeführt wird. 

**Anmerkung**  
Wenn Sie die automatische Tabellenoptimierung verwenden, müssen Sie den Verteilungsstil Ihrer Tabelle nicht auswählen. Weitere Informationen finden Sie unter [Aktivieren automatischer Tabellenoptimierung](t_Creating_tables.md).

Einige Vorschläge für den besten Ansatz folgen:

1. Verteilen der Faktentabelle und einer Dimensionstabelle auf ihren gemeinsamen Spalten.

   Ihre Faktentabelle kann nur einen Verteilungsschlüssel haben. Alle Tabellen, die auf einem anderen Schlüssel verbunden werden, werden nicht mit der Faktentabelle zusammengestellt. Wählen Sie eine Dimension für die Zusammenstellung auf der Grundlage der Join-Häufigkeit und der Größe der Joining-Zeilen. Bezeichnen Sie den Primärschlüssel der Dimensionstabelle und den entsprechenden Fremdschlüssel der Faktentabelle als DISTKEY. 

1. Wählen Sie die größte Dimension auf der Grundlage der Größe des gefilterten Datasets. 

   Nur die in dem Join verwendeten Zeilen müssen verteilt werden. Berücksichtigen Sie daher die Größe des Datensatzes nach der Filterung und nicht die Größe der Tabelle. 

1. Wählen Sie eine Spalte mit hoher Kardinalität im gefilterten Ergebnissatz. 

   Wenn Sie beispielsweise eine Vertriebstabelle auf einer Datumsspalte verteilen, erhalten Sie wahrscheinlich eine ziemlich gleichmäßige Datenverteilung, wenn nicht der Großteil Ihres Vertriebs saisongebunden ist. Wenn Sie jedoch üblicherweise ein bereichseingeschränktes Prädikat für die Filterung für einen engen Zeitbereich verwenden, befinden sich die meisten der gefilterten Zeilen auf einem begrenzten Satz von Slices, und der Abfrageworkload wird verzerrt. 

1. Ändern einiger Dimensionstabellen, um die ALL-Verteilung zu verwenden.

   Wenn eine Dimensionstabelle nicht mit der Faktentabelle oder anderen wichtigen Joining-Tabellen zusammengestellt werden kann, können Sie die Abfrageleistung dadurch erheblich verbessern, dass Sie die gesamte Tabelle zu allen Knoten verteilen. Die Verwendung der ALL-Verteilung vervielfacht die Speicheranforderungen, verlängert Ladezeiten und erhöht den Aufwand für Wartungsoperationen. Sie sollten daher alle Faktoren sorgfältig abwägen, bevor Sie die ALL-Verteilung wählen.

Wenn Amazon Redshift den geeigneten Verteilungsstil auswählt, geben Sie `AUTO` für den Verteilungsstil an. 

Für weitere Informationen zur Auswahl von Verteilungsstilen vgl. [Datenverteilung zur Abfrageoptimierung](t_Distributing_data.md).

# Lassen Sie COPY die Kompressionskodierungen auswählen
<a name="c_best-practices-use-auto-compression"></a>

Sie können Kompressionskodierungen angeben, wenn Sie eine Tabelle erstellen, in den meisten Fällen führt jedoch die automatische Kompression zu den besten Ergebnissen.

ENCODE AUTO ist die Standardeinstellung für Tabellen. Wenn für eine Tabelle ENCODE AUTO festgelegt wird, verwaltet Amazon Redshift automatisch die Kompressionskodierung für alle Spalten in der Tabelle. Weitere Informationen erhalten Sie unter [CREATE TABLE](r_CREATE_TABLE_NEW.md) und [ALTER TABLE](r_ALTER_TABLE.md).

Der COPY-Befehl analysiert Ihre Daten und wendet die Kompressionskodierungen automatisch auf eine leere Tabelle im Rahmen der Ladeoperation an. 

Die automatische Kompression sorgt für den Ausgleich der allgemeinen Leistung bei der Auswahl von Kompressionskodierungen. Bereichseingeschränkte Scans können eine geringe Leistung zeigen, wenn Sortierschlüsselspalten stärker komprimiert sind als andere Spalten in der selben Abfrage. Daher wählt die automatische Kompression eine weniger effiziente Kompressionskodierung, um den Ausgleich zwischen der Sortierschlüsselspalte und den anderen Spalten zu wahren.

Angenommen, der Sortierschlüssel Ihrer Tabelle ist ein Datum oder ein Zeitstempel und die Tabelle verwendet viele große varchar-Spalten. In diesem Fall erzielen Sie möglicherweise eine bessere Leistung, wenn Sie die Sortierschlüsselspalte überhaupt nicht komprimieren. Führen Sie den Befehl [ANALYZE COMPRESSION](r_ANALYZE_COMPRESSION.md) für die Tabelle aus, und verwenden Sie dann die Kodierungen zur Erstellung einer neuen Tabelle, lassen Sie jedoch die Kompressionskodierung für den Sortierschlüssel weg.

Die automatische Kompressionskodierung ist mit Leistungseinbußen verbunden, aber nur, wenn die Tabelle leer ist und nicht bereits über eine Kompressionskodierung verfügt. Bei kurzlebigen und häufig erstellten Tabellen wie Staging-Tabellen laden Sie die Tabelle einmal mit automatischer Kompression oder führen den Befehl ANALYZE COMPRESSION aus. Verwenden Sie dann diese Kodierungen, um neue Tabellen zu erstellen. Sie können diese Kodierungen zu der CREATE TABLE-Anweisung hinzufügen oder CREATE TABLE LIKE verwenden, um eine neue Tabelle mit der gleichen Kodierung zu erstellen. 

Weitere Informationen finden Sie unter [Laden von Tabellen mit automatischer Kompression](c_Loading_tables_auto_compress.md).

# Definition von Primär- und Fremdschlüsseleinschränkungen
<a name="c_best-practices-defining-constraints"></a>

Definieren Sie nach Bedarf Primär- und Fremdschlüsseleinschränkungen zwischen Tabellen. Obwohl diese nur Informationscharakter haben, nutzt der Abfrageoptimierer diese Einschränkungen zur Generierung effizienterer Abfragepläne.

Definieren Sie Primär- und Fremdschlüsseleinschränkungen nur, wenn Ihre Anwendung die Einschränkungen durchsetzt. Amazon Redshift setzt keine Einschränkungen für eindeutige, Primär- und Fremdschlüssel durch. 

Weitere Informationen darüber, wie Amazon Redshift Einschränkungen verwendet, finden Sie unter [Tabelleneinschränkungen](t_Defining_constraints.md).

# Verwendung der geringstmöglichen Spaltengröße
<a name="c_best-practices-smallest-column-size"></a>

Gewöhnen Sie sich nicht an, aus Bequemlichkeit die maximale Spaltengröße zu verwenden. 

Berücksichtigen Sie stattdessen die größten Werte, die wahrscheinlich in Ihren Spalten gespeichert werden, und dimensionieren Sie sie entsprechend. Beispielsweise wird eine CHAR-Spalte zur Speicherung von Abkürzungen von US-Bundesstaaten und Territorien von der Post verwendet und muss lediglich CHAR(2) sein.

# date/time Datentypen für Datumsspalten verwenden
<a name="c_best-practices-timestamp-date-columns"></a>

Amazon Redshift speichert DATE- und TIMESTAMP-Daten effizienter als CHAR oder VARCHAR, was die Abfrageleistung verbessert. Verwenden Sie den Datentyp DATE oder TIMESTAMP, je nach der Auflösung, die Sie benötigen, anstelle eines Zeichentyps beim Speichern von Datums-/Uhrzeitinformationen. Weitere Informationen finden Sie unter [Datum-/Uhrzeittypen](r_Datetime_types.md).