CREATE TABLE - Amazon Redshift

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.

CREATE TABLE

Erstellt eine neue Tabelle in der aktuellen Datenbank. Sie definieren eine Liste von Spalten, die jeweils Daten eines bestimmten Typs enthalten. Der Besitzer der Tabelle ist der Aussteller des CREATE TABLE Befehls.

Erforderliche Berechtigungen

Folgende Rechte sind erforderlich für CREATETABLE:

  • Superuser

  • Benutzer mit der CREATE TABLE Berechtigung

Syntax

CREATE [ [LOCAL ] { TEMPORARY | TEMP } ] TABLE [ IF NOT EXISTS ] table_name ( { column_name data_type [column_attributes] [ column_constraints ] | table_constraints | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ] ) [ BACKUP { YES | NO } ] [table_attributes] where column_attributes are: [ DEFAULT default_expr ] [ IDENTITY ( seed, step ) ] [ GENERATED BY DEFAULT AS IDENTITY ( seed, step ) ] [ ENCODE encoding ] [ DISTKEY ] [ SORTKEY ] [ COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE ] and column_constraints are: [ { NOT NULL | NULL } ] [ { UNIQUE | PRIMARY KEY } ] [ REFERENCES reftable [ ( refcolumn ) ] ] and table_constraints are: [ UNIQUE ( column_name [, ... ] ) ] [ PRIMARY KEY ( column_name [, ... ] ) ] [ FOREIGN KEY (column_name [, ... ] ) REFERENCES reftable [ ( refcolumn ) ] and table_attributes are: [ DISTSTYLE { AUTO | EVEN | KEY | ALL } ] [ DISTKEY ( column_name ) ] [ [COMPOUND | INTERLEAVED ] SORTKEY ( column_name [,...]) | [ SORTKEY AUTO ] ] [ ENCODE AUTO ]

Parameter

LOCAL

Optional. Obwohl dieses Schlüsselwort in der Anweisung akzeptiert wird, hat es in Amazon Redshift keine Auswirkungen.

TEMPORARY | TEMP

Ein Schlüsselwort, das eine temporäre Tabelle erstellt, die nur innerhalb der aktuellen Sitzung angezeigt wird. Die Tabelle wird am Ende der Sitzung, in der sie erstellt wird, automatisch entfernt. Die temporäre Tabelle kann denselben Namen wie eine permanente Tabelle haben. Die temporäre Tabelle wird in einem eigenen, sitzungsspezifischen Schema erstellt. (Sie können für dieses Schema keinen Namen angeben.) Dieses temporäre Schema wird das erste Schema im Suchpfad. Daher hat die temporäre Tabelle Vorrang vor der permanenten Tabelle, es sei denn, Sie qualifizieren den Tabellennamen mit dem Schemanamen, um auf die permanente Tabelle zuzugreifen. Weitere Informationen zu Schemata und Rangfolgen finden Sie unter search_path.

Anmerkung

Standardmäßig sind Datenbankbenutzer aufgrund ihrer automatischen Mitgliedschaft in der PUBLIC Gruppe berechtigt, temporäre Tabellen zu erstellen. Um einem Benutzer dieses Recht zu verweigern, entziehen Sie der PUBLIC Gruppe das TEMP Recht und gewähren Sie das TEMP Recht dann explizit nur bestimmten Benutzern oder Benutzergruppen.

WENN NOT EXISTS

Eine Klausel, die angibt, dass der Befehl keine Änderungen ausführen und die Meldung zurückgeben soll, dass die Tabelle vorhanden ist, statt mit einem Fehler beendet zu werden, wenn die angegebene Tabelle bereits vorhanden ist. Beachten Sie, dass die vorhandene Tabelle möglicherweise überhaupt nicht der Tabelle entspricht, die erstellt worden wäre. Es wird nur der Tabellenname verglichen.

Diese Klausel ist bei der Skripterstellung nützlich, damit das Skript nicht fehlschlägt, wenn CREATE TABLE versucht wird, eine Tabelle zu erstellen, die bereits existiert.

table_name

Der Name der Tabelle, die erstellt werden soll.

Wichtig

Wenn Sie einen Tabellennamen angeben, der mit „#“ beginnt, wird die Tabelle als temporäre Tabelle erstellt. Im Folgenden wird ein Beispiel gezeigt:

create table #newtable (id int);

Sie verwenden „#“ auch für Verweise auf die Tabelle. Beispielsweise:

select * from #newtable;

Die maximale Länge des Tabellennamens beträgt 127 Bytes; längere Namen werden bei 127 Bytes abgeschnitten. Sie können UTF -8 Multibyte-Zeichen bis zu einem Maximum von vier Byte verwenden. Amazon Redshift erzwingt ein Kontingent für die Anzahl der Tabellen pro Cluster nach Knotentyp, einschließlich benutzerdefinierter temporärer Tabellen und temporärer Tabellen, die von Amazon Redshift während der Abfrageverarbeitung oder Systemwartung erstellt werden. Optional kann der Tabellenname mit dem Datenbank- und Schemanamen qualifiziert werden. Im folgenden Beispiel ist der Datenbankname tickit, der Schemaname public und der Tabellenname test.

create table tickit.public.test (c1 int);

Wenn die Datenbank oder das Schema nicht vorhanden sind, wird die Tabelle nicht erstellt, und die Anweisung gibt einen Fehler zurück. Sie können in den Systemdatenbanken template0, template1, padb_harvest oder sys:internal keine Tabellen oder Ansichten erstellen.

Wenn ein Schemaname vorhanden ist, wird die neue Tabelle in diesem Schema erstellt (vorausgesetzt, der Ersteller kann auf das Schema zugreifen). Der Tabellenname muss für dieses Schema eindeutig sein. Wenn kein Schema angegeben ist, wird die Tabelle anhand des aktuellen Datenbankschemas erstellt. Wenn Sie eine temporäre Tabelle erstellen, können Sie keinen Schemanamen angeben, da sich temporäre Tabellen in einem speziellen Schema befinden.

Mehrere temporäre Tabellen mit demselben Namen können in derselben Datenbank zur gleichen Zeit vorhanden sein, wenn sie in getrennten Sitzungen erstellt wurden, da die Tabellen unterschiedlichen Schemata zugewiesen werden. Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen.

column_name

Der Name einer Spalte, die in der neuen Tabelle erstellt werden soll. Die maximale Länge des Spaltennamens beträgt 127 Bytes; längere Namen werden bei 127 Bytes abgeschnitten. Sie können UTF -8 Multibyte-Zeichen bis zu einem Maximum von vier Byte verwenden. Die maximale Anzahl der Spalten, die Sie in einer einzelnen Tabelle definieren können, ist 1.600. Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen.

Anmerkung

Wenn Sie eine „breite Tabelle“ erstellen, achten Sie darauf, dass Ihre Spaltenliste nicht die Zeilenbreitengrenzen überschreitet, um während der Verarbeitung von Lasten und Abfragen sofort Ergebnisse bereitzustellen. Weitere Informationen finden Sie unter Nutzungshinweise.

data_type

Der Datentyp der Spalte, die erstellt wird. Für CHAR und VARCHAR Spalten können Sie das MAX Schlüsselwort verwenden, anstatt eine maximale Länge anzugeben. MAXlegt die maximale Länge auf 4.096 Byte für CHAR oder 65535 Byte für fest. VARCHAR Die maximale Größe eines GEOMETRY Objekts beträgt 1.048.447 Byte.

Informationen zu den Datentypen, die Amazon Redshift unterstützt, finden Sie unter Datentypen.

DEFAULTdefault_expr

Eine Klausel, die der Spalte einen Standarddatenwert zuweist. Der Datentyp von default_expr muss dem Datentyp der Spalte entsprechen. Der DEFAULT Wert muss ein variablenfreier Ausdruck sein. Unterabfragen, Querreferenzen auf andere Spalten in der aktuellen Tabelle und benutzerdefinierte Funktionen sind nicht zulässig.

Der Ausdruck default_expr wird in jeder INSERT Operation verwendet, die keinen Wert für die Spalte angibt. Wenn kein Standardwert angegeben ist, ist der Standardwert für die Spalte null.

Wenn eine COPY Operation mit einer definierten Spaltenliste eine Spalte auslässt, die einen Wert hat, fügt der COPY Befehl den DEFAULT Wert von default_expr ein.

IDENTITY(Startwert, Schritt)

Klausel, die angibt, dass es sich bei der Spalte um eine IDENTITY Spalte handelt. Eine IDENTITY Spalte enthält eindeutige automatisch generierte Werte. Der Datentyp für eine IDENTITY Spalte muss entweder INT oder BIGINT sein.

Wenn Sie Zeilen mithilfe einer INSERT- oder INSERT INTO [tablename] VALUES()-Anweisung hinzufügen, beginnen diese Werte mit dem Wert, der als Startwert angegeben ist, und werden um die Zahl gesteigert, die als Schritt bezeichnet wird.

Wenn Sie die Tabelle mithilfe einer INSERT INTO [tablename] SELECT * FROM- oder COPY-Anweisung laden, werden die Daten parallel geladen und auf die Knoten-Slices verteilt. Um sicherzustellen, dass die IDENTITY-Werte eindeutig sind, überspringt Amazon Redshift beim Erstellen von IDENTITY-Werten eine Reihe von Werten. Identity-Werte sind eindeutig, ihre Reihenfolge stimmt jedoch möglicherweise nicht mit der in den Quelldateien überein.

GENERATEDBY DEFAULT AS IDENTITY (Startwert, Schritt)

Klausel, die angibt, dass es sich bei der IDENTITY Spalte um eine Standardspalte handelt, und die es Ihnen ermöglicht, der Spalte automatisch einen eindeutigen Wert zuzuweisen. Der Datentyp für eine IDENTITY Spalte muss entweder INT oder seinBIGINT. Wenn Sie Zeilen ohne Werte hinzufügen, beginnen diese Werte mit dem Wert, der als Startwert angegeben ist, und werden um die Zahl erhöht, die als Schritt bezeichnet wird. Informationen zur Generierung von Werten finden Sie unter IDENTITY .

COPYSie können auch während INSERTUPDATE, oder einen Wert ohne EXPLICIT _ angebenIDS. Amazon Redshift verwendet diesen Wert zum Einfügen in die Identitätsspalte, anstatt den vom System generierten Wert zu verwenden. Der Wert kann ein Duplikat, ein Wert unter dem Startwert oder ein Wert zwischen Schrittwerten sein. Amazon Redshift prüft nicht die Eindeutigkeit der Werte in der Spalte. Das Angeben eines Wertes hat keinen Einfluss auf den nächsten vom System generierten Wert.

Anmerkung

Wenn Sie Eindeutigkeit in der Spalte benötigen, fügen Sie keinen Duplikatwert hinzu. Fügen Sie stattdessen einen eindeutigen Wert hinzu, der unter dem Startwert oder zwischen Schrittwerten liegt.

Bedenken Sie Folgendes zu Standard-Identity-Spalten:

  • Die standardmäßigen Identitätsspalten sind NOTNULL. NULLkann nicht eingefügt werden.

  • Verwenden Sie zum Einfügen eines generierten Wertes in eine Standard-Identity-Spalte das Schlüsselwort DEFAULT.

    INSERT INTO tablename (identity-column-name) VALUES (DEFAULT);
  • Das Überschreiben von Werten einer Standard-Identity-Spalte hat keine Auswirkungen auf den nächsten generierten Wert.

  • Sie können der ALTER TABLE ADD COLUMN Anweisung keine standardmäßige Identitätsspalte hinzufügen.

  • Sie können eine Standard-Identitätsspalte an die ALTER TABLE APPEND Anweisung anhängen.

ENCODEKodierung

Die Kompressionskodierung für eine Spalte. ENCODEAUTOist die Standardeinstellung für Tabellen. Amazon Redshift verwaltet automatisch die Komprimierungskodierung für alle Spalten in der Tabelle. Wenn Sie die Komprimierungskodierung für eine Spalte in der Tabelle angeben, ist die Tabelle nicht mehr auf eingestellt ENCODEAUTO. Amazon Redshift verwaltet nicht mehr automatisch die Komprimierungskodierung für alle Spalten in der Tabelle. Sie können die ENCODE AUTO Option für die Tabelle angeben, damit Amazon Redshift die Komprimierungskodierung für alle Spalten in der Tabelle automatisch verwalten kann.

Amazon Redshift weist den Spalten, für die Sie keine Komprimierungskodierung angeben, automatisch eine anfängliche Komprimierungskodierung zu:

  • Allen Spalten in temporären Tabellen wird standardmäßig RAW Komprimierung zugewiesen.

  • Spalten, die als Sortierschlüssel definiert sind, wird RAW Komprimierung zugewiesen.

  • Spalten, die alsBOOLEAN,, REAL DOUBLE PRECISIONGEOMETRY, oder GEOGRAPHY Datentyp definiert sind, wird RAW Komprimierung zugewiesen.

  • Spalten, die alsSMALLINT,,,INTEGER,BIGINT, DECIMAL DATE TIME TIMETZTIMESTAMP, oder definiert TIMESTAMPTZ sind oder denen eine AZ64 Komprimierung zugewiesen wurde.

  • Spalten, die als CHARVARCHAR, definiert VARBYTE sind oder denen LZO Komprimierung zugewiesen wurde.

Anmerkung

Wenn Sie nicht möchten, dass eine Spalte komprimiert wird, geben Sie die RAW Kodierung explizit an.

Die folgenden compression encodings werden unterstützt:

  • AZ64

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MOSTLY8

  • MOSTLY16

  • MOSTLY32

  • RAW(keine Komprimierung)

  • RUNLENGTH

  • TEXT255

  • TEXT32K

  • ZSTD

DISTKEY

Ein Schlüsselwort, das angibt, dass die Spalte der Verteilungsschlüssel für die Tabelle ist. In eine Tabelle kann nur eine Spalte der Verteilungsschlüssel sein. Sie können das DISTKEY Schlüsselwort nach einem Spaltennamen oder als Teil der Tabellendefinition verwenden, indem Sie die Syntax DISTKEY (column_name) verwenden. Beide Methoden haben die gleiche Wirkung. Weitere Informationen finden Sie weiter unten in diesem Thema unter dem DISTSTYLE Parameter.

Der Datentyp einer Verteilerschlüsselspalte kann sein: BOOLEAN REAL DOUBLEPRECISION,SMALLINT,INTEGER,BIGINT,DECIMAL,DATE, TIMETIMETZ,TIMESTAMP,, oder TIMESTAMPTZCHAR,,VARCHAR.

SORTKEY

Ein Schlüsselwort, das angibt, dass die Spalte der Sortierschlüssel für die Tabelle ist. Wenn Daten in die Tabelle geladen werden, werden die Daten anhand einer oder mehrerer Spalten sortiert, die als Sortierschlüssel bezeichnet sind. Sie können das SORTKEY Schlüsselwort hinter einem Spaltennamen verwenden, um einen einspaltigen Sortierschlüssel anzugeben, oder Sie können mithilfe der Syntax SORTKEY (column_name [,...]) eine oder mehrere Spalten als Sortierschlüsselspalten für die Tabelle angeben. Mit dieser Syntax werden nur zusammengesetzte Sortierschlüssel erstellt.

Sie können maximal 400 SORTKEY Spalten pro Tabelle definieren.

Der Datentyp einer Sortierschlüsselspalte kann sein: BOOLEAN REAL DOUBLEPRECISION,SMALLINT,INTEGER,BIGINT,DECIMAL,DATE,TIME,TIMETZ,TIMESTAMP, oderTIMESTAMPTZ,CHAR, oderVARCHAR.

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

Eine Klausel, die angibt, ob die Zeichenkettensuche oder der Vergleich in der Spalte den Wert CASE _ SENSITIVE oder CASE _ hatINSENSITIVE. Der Standardwert entspricht der aktuellen Konfiguration für die Beachtung der Groß-/Kleinschreibung in der Datenbank.

Verwenden Sie den folgenden Befehl, um die Sortierinformationen der Datenbank zu ermitteln:

SELECT db_collation(); db_collation ---------------- case_sensitive (1 row)
NOT NULL | NULL

NOTNULLgibt an, dass die Spalte keine Nullwerte enthalten darf. NULL, die Standardeinstellung, gibt an, dass die Spalte Nullwerte akzeptiert. IDENTITYSpalten werden NOT NULL standardmäßig deklariert.

UNIQUE

Ein Schlüsselwort, das angibt, dass die Spalte nur eindeutige Werte enthalten darf. Das Verhalten der Tabelleneinschränkung in Bezug auf Eindeutigkeit ist das gleiche wie im Fall von Spalteneinschränkungen, kann jedoch zusätzlich mehrere Spalten umfassen. Verwenden Sie die Syntax UNIQUE (column_name [,...]), um eine eindeutige Tabelleneinschränkung zu definieren.

Wichtig

Eindeutigkeitseinschränkungen dienen Informationszwecken und werden nicht vom System erzwungen.

PRIMARY KEY

Ein Schlüsselwort, das angibt, dass die Spalte der Primärschlüssel für die Tabelle ist. Mittels einer Spaltendefinition kann nur eine Spalte als Primärschlüssel definiert werden. Um eine Tabelleneinschränkung mit einem mehrspaltigen Primärschlüssel zu definieren, verwenden Sie die Syntax PRIMARY KEY (column_name [,...]).

Die Identifizierung einer Spalte als Primärschlüssel stellt Metadaten über das Design des Schemas bereit. Ein Primärschlüssel impliziert, dass sich andere Tabellen auf diesen Spaltensatz als eindeutige Bezeichner von Zeilen verlassen können. Für eine Tabelle kann jeweils nur ein Primärschlüssel angegeben werden, ob als Spalten- oder als Tabelleneinschränkung. Die Primärschlüsseleinschränkung sollte einen Spaltensatz nennen, der sich von anderen Spaltensätzen unterscheidet, der von anderen eindeutigen Einschränkungen genannt wird, die für dieselbe Tabelle definiert sind.

PRIMARYKEYSpalten sind auch definiert als. NOT NULL

Wichtig

Primärschlüsseleinschränkungen dienen lediglich Informationszwecken. Sie werden nicht vom System erzwungen, werden jedoch vom Planer verwendet.

References reftable [ ( refcolumn ) ]

Eine Klausel, die eine Fremdschlüsseleinschränkung angibt, die impliziert, dass die Spalte nur Werte enthalten darf, die Werten in der referenzierten Spalte einer Zeile der referenzierten Tabelle entsprechen. Bei den referenzierten Spalten muss es sich um die Spalten einer Eindeutigkeits- oder Primärschlüsseleinschränkung in der referenzierten Tabelle handeln.

Wichtig

Fremdschlüsseleinschränkungen dienen lediglich Informationszwecken. Sie werden nicht vom System erzwungen, werden jedoch vom Planer verwendet.

LIKEElterntabelle [{INCLUDING|}] EXCLUDING DEFAULTS

Eine Klausel, die eine bestehende Tabelle angibt, aus der die neue Tabelle automatisch Spaltennamen, Datentypen und Einschränkungen kopiert. NOT NULL Die neue Tabelle und die übergeordnete Tabelle werden entkoppelt, und Änderungen, die in der übergeordneten Tabelle ausgeführt werden, werden nicht auf die neue Tabelle angewendet. Standardausdrücke für die kopierten Spaltendefinitionen werden nur kopiert, wenn sie INCLUDING DEFAULTS angegeben sind. Das Standardverhalten besteht darin, Standardausdrücke auszuschließen, sodass alle Spalten der neuen Tabelle keine Standardwerte besitzen.

Mit dieser LIKE Option erstellte Tabellen erben keine Primär- und Fremdschlüsseleinschränkungen. Verteilungsstil, Sortierschlüssel und NULL Eigenschaften werden von LIKE Tabellen vererbt, aber Sie können sie nicht explizit in der... BACKUP CREATE TABLE LIKEAussage.

BACKUP{YES| NEIN}

Eine Klausel, die angibt, ob die Tabelle in automatisierten und manuellen Cluster-Snapshots enthalten sein sollte.

Geben Sie für Tabellen, wie Staging-Tabellen, die keine kritischen Daten enthalten, BACKUP NEIN an, um beim Erstellen von Snapshots und beim Wiederherstellen von Snapshots Verarbeitungszeit zu sparen und den Speicherplatz auf Amazon Simple Storage Service zu reduzieren. Die Einstellung BACKUP NEIN hat keine Auswirkung auf die automatische Replikation von Daten auf andere Knoten innerhalb des Clusters. Daher werden Tabellen, für die BACKUP NO angegeben ist, im Falle eines Knotenausfalls wiederhergestellt. Die Standardeinstellung ist BACKUPYES.

DISTSTYLE { AUTO | EVEN | KEY | ALL }

Schlüsselwort, das den Datenverteilungsstil für die gesamte Tabelle definiert. Amazon Redshift verteilt die Zeilen einer Tabelle an die Datenverarbeitungsknoten gemäß dem für die Tabelle angegebenen Verteilungstyp. Die Standardeinstellung istAUTO.

Der von Ihnen für Tabellen ausgewählte Verteilungsstil wirkt sich auf die allgemeine Leistung Ihrer Datenbank aus. Weitere Informationen finden Sie unter Datenverteilung zur Abfrageoptimierung. Die möglichen Distributionsstile sind:

  • AUTO: Amazon Redshift weist auf der Grundlage der Tabellendaten einen optimalen Verteilungsstil zu. Wenn beispielsweise ein AUTO Verteilungsstil angegeben ist, weist Amazon Redshift den ALL Verteilungsstil zunächst einer kleinen Tabelle zu. Wenn die Tabelle größer wird, ändert Amazon Redshift möglicherweise den Verteilungsstil auf KEY und wählt den Primärschlüssel (oder eine Spalte des zusammengesetzten Primärschlüssels) als. DISTKEY Wenn die Tabelle größer wird und keine der Spalten dafür geeignet istDISTKEY, ändert Amazon Redshift den Verteilungsstil aufEVEN. Die Änderung des Verteilungsstils erfolgt im Hintergrund mit minimalen Auswirkungen auf die Benutzerabfragen.

    Um den auf eine Tabelle angewendeten Verteilungsstil zu sehen, fragen Sie die CLASS PG_-Systemkatalogtabelle ab. Weitere Informationen finden Sie unter Anzeigen von Verteilungsstilen.

  • EVEN: Die Daten in der Tabelle sind in einer Round-Robin-Verteilung gleichmäßig auf die Knoten in einem Cluster verteilt. Zeilen IDs werden verwendet, um die Verteilung zu bestimmen, und ungefähr die gleiche Anzahl von Zeilen wird auf jeden Knoten verteilt.

  • KEY: Die Daten werden nach den Werten in der DISTKEY Spalte verteilt. Wenn Sie verknüpfte Spalten von verknüpften Tabellen als Verteilungsschlüssel festlegen, werden die verknüpften Zeilen aus beiden Tabellen auf den Datenverarbeitungsknoten zusammen platziert. Wenn Daten zusammen platziert werden, kann der Optimierer Verknüpfungen effizienter ausführen. Wenn Sie angeben DISTSTYLEKEY, müssen Sie einer DISTKEY Spalte einen Namen geben, entweder für die Tabelle oder als Teil der Spaltendefinition. Weitere Informationen finden Sie weiter oben in diesem Thema unter dem DISTKEY Parameter.

  • ALL: Eine Kopie der gesamten Tabelle wird an jeden Knoten verteilt. Dieser Verteilungsstil stellt sicher, dass alle Zeilen, die für eine Verknüpfung erforderlich sind, auf jedem Knoten vorhanden sind. Die Speicheranforderungen werden jedoch multipliziert und die Lade- und Wartungszeiten für die Tabelle werden verlängert. ALLDie Verteilung kann die Ausführungszeit verkürzen, wenn sie mit bestimmten Dimensionstabellen verwendet wird, bei denen eine KEY Verteilung nicht angemessen ist. Leistungsverbesserungen müssen jedoch gegen die Wartungskosten abgewogen werden.

DISTKEY(Spaltenname)

Eine Einschränkung, die die Spalte angibt, die als Verteilungsschlüssel für die Tabelle verwendet werden soll. Sie können das DISTKEY Schlüsselwort nach einem Spaltennamen oder als Teil der Tabellendefinition verwenden, indem Sie die Syntax DISTKEY (column_name) verwenden. Beide Methoden haben die gleiche Wirkung. Weitere Informationen finden Sie weiter oben in diesem Thema unter dem DISTSTYLE Parameter.

[COMPOUND|INTERLEAVED] SORTKEY (Spaltenname [,...]) | [] SORTKEY AUTO

Gibt einen oder mehrere Sortierschlüssel für die Tabelle an. Wenn Daten in die Tabelle geladen werden, werden die Daten anhand der Spalten sortiert, die als Sortierschlüssel bezeichnet sind. Sie können das SORTKEY Schlüsselwort hinter einem Spaltennamen verwenden, um einen einspaltigen Sortierschlüssel anzugeben, oder Sie können mithilfe der Syntax eine oder mehrere Spalten als Sortierschlüsselspalten für die Tabelle angeben. SORTKEY (column_name [ , ... ] )

Sie können optional einen Stil angeben COMPOUND oder einen INTERLEAVED Sortierstil angeben. Wenn Sie SORTKEY mit Spalten angeben, ist die StandardeinstellungCOMPOUND. Weitere Informationen finden Sie unter Schlüssel sortieren.

Wenn Sie keine Optionen für die Sortierung von Schlüsseln angeben, ist die StandardeinstellungAUTO.

Sie können maximal 400 COMPOUND SORTKEY Spalten oder 8 INTERLEAVED SORTKEY Spalten pro Tabelle definieren.

AUTO

Legt fest, dass Amazon Redshift einen optimalen Sortierschlüssel basierend auf den Tabellendaten zuweist. Wenn beispielsweise ein AUTO Sortierschlüssel angegeben ist, weist Amazon Redshift einer Tabelle zunächst keinen Sortierschlüssel zu. Wenn Amazon Redshift feststellt, dass ein Sortierschlüssel die Leistung von Abfragen verbessert, kann Amazon Redshift den Sortierschlüssel Ihrer Tabelle ändern. Die eigentliche Sortierung der Tabelle erfolgt durch die automatische Tabellensortierung. Weitere Informationen finden Sie unter Automatische Tabellensortierung.

Amazon Redshift ändert keine Tabellen, die bereits Sortier- oder Verteilungsschlüssel haben. Mit einer Ausnahme: Wenn eine Tabelle einen Verteilungsschlüssel hat, der noch nie in einer verwendet wurdeJOIN, kann der Schlüssel geändert werden, wenn Amazon Redshift feststellt, dass es einen besseren Schlüssel gibt.

Um den Sortierschlüssel einer Tabelle anzuzeigen, fragen Sie die SVV _ TABLE _ INFO -Systemkatalogansicht ab. Weitere Informationen finden Sie unter SVV_TABLE_INFO. Um die Amazon Redshift Advisor-Empfehlungen für Tabellen anzuzeigen, fragen Sie die RECOMMENDATIONS Systemkatalogansicht SVV ALTER TABLE _ _ ab. Weitere Informationen finden Sie unter SVV_ALTER_TABLE_RECOMMENDATIONS. Um die von Amazon Redshift durchgeführten Aktionen zu sehen, fragen Sie die SVL _ _ AUTO WORKER _ ACTION Systemkatalogansicht ab. Weitere Informationen finden Sie unter SVL_AUTO_WORKER_ACTION.

COMPOUND

Gibt an, dass die Daten mittels eines zusammengesetzten Schlüssels sortiert werden, der aus allen aufgelisteten Spalten in der Reihenfolge ihrer Auflistung besteht. Ein zusammengesetzter Sortierschlüssel ist am nützlichsten, wenn eine Abfrage Zeilen in der Reihenfolge der Sortierspalten scannt. Die Leistungsvorteile einer Sortierung mit einem zusammengesetzten Schlüssel nehmen ab, wenn Abfragen von sekundären Sortierspalten abhängig sind. Sie können maximal 400 COMPOUND SORTKEY Spalten pro Tabelle definieren.

INTERLEAVED

Gibt an, dass die Daten mittels eines überlappenden Sortierschlüssels sortiert werden. Für einen überlappenden Sortierschlüssel können maximal acht Spalten angegeben werden.

Eine überlappende Sortierung gewichtet jede Spalte bzw. jeden Subsatz von Spalten im Sortierschlüssel gleich, so dass Abfragen nicht von der Reihenfolge der Spalten im Sortierschlüssel abhängig sind. Wenn eine Abfrage eine oder mehrere sekundäre Sortierspalten verwendet, wird die Abfrageleistung durch die überlappende Sortierung deutlich verbessert. Die überlappende Sortierung führt zu geringfügigen Overhead-Kosten für das Laden von Daten und das Bereinigen von Operationen.

Wichtig

Verwenden Sie keinen Interleaved-Sortierschlüssel in Spalten mit monoton ansteigenden Attributen, wie Identitätsspalten, Daten oder Zeitstempel.

ENCODE AUTO

Ermöglicht Amazon Redshift, den Kodierungstyp für alle Spalten in der Tabelle automatisch anzupassen, um die Abfrageleistung zu optimieren. ENCODEAUTObehält die ursprünglichen Kodierungstypen bei, die Sie bei der Erstellung der Tabelle angegeben haben. Wenn Amazon Redshift dann feststellt, dass ein neuer Kodierungstyp die Abfrageleistung verbessern kann, kann Amazon Redshift den Kodierungstyp der Tabellenspalten ändern. ENCODEAUTOist die Standardeinstellung, wenn Sie für keine Spalte in der Tabelle einen Kodierungstyp angeben.

UNIQUE(Spaltenname [,...])

Eine Einschränkung, die angibt, dass eine Gruppe aus einer oder mehreren Spalten einer Tabelle nur eindeutige Werte enthalten darf. Das Verhalten der Tabelleneinschränkung in Bezug auf Eindeutigkeit ist das gleiche wie im Fall von Spalteneinschränkungen, kann jedoch zusätzlich mehrere Spalten umfassen. Im Kontext von Eindeutigkeitseinschränkungen werden Null-Werte nicht als gleichwertig betrachtet. Jede Eindeutigkeitseinschränkung für eine Tabelle muss einen Spaltensatz nennen, der sich von dem Spaltensatz unterscheidet, der von einer anderen Eindeutigkeits- oder Primärschlüsseleinschränkung genannt wird, die für die Tabelle definiert ist.

Wichtig

Eindeutigkeitseinschränkungen dienen Informationszwecken und werden nicht vom System erzwungen.

PRIMARYKEY(Spaltenname [,...])

Eine Einschränkung, die angibt, dass eine Spalte oder eine Reihe von Spalten einer Tabelle nur eindeutige (nicht duplizierte) Nicht-Null-Werte enthalten darf. Die Identifizierung eines Spaltensatzes als Primärschlüssel stellt darüber hinaus Metadaten zum Design des Schemas bereit. Ein Primärschlüssel impliziert, dass sich andere Tabellen auf diesen Spaltensatz als eindeutige Bezeichner von Zeilen verlassen können. Für eine Tabelle kann jeweils nur ein Primärschlüssel angegeben werden, ob als Einzelspalten- oder als Tabelleneinschränkung. Die Primärschlüsseleinschränkung sollte einen Spaltensatz nennen, der sich von anderen Spaltensätzen unterscheidet, der von anderen eindeutigen Einschränkungen genannt wird, die für dieselbe Tabelle definiert sind.

Wichtig

Primärschlüsseleinschränkungen dienen lediglich Informationszwecken. Sie werden nicht vom System erzwungen, werden jedoch vom Planer verwendet.

FOREIGNKEY(Spaltenname [,...]) reftable [(refcolumn)REFERENCES]

Eine Einschränkung, die eine Fremdschlüsseleinschränkung angibt, die erfordert, dass eine Gruppe aus einer oder mehreren Spalten der neuen Tabelle nur Werte enthalten darf, die Werten in der referenzierten Spalte oder den Spalten einer Zeile der referenzierten Tabelle entsprechen. Wenn refcolumn ausgelassen wird, wird der Primärschlüssel von reftable verwendet. Bei den referenzierten Spalten muss es sich um die Spalten einer Eindeutigkeits- oder Primärschlüsseleinschränkung in der referenzierten Tabelle handeln.

Wichtig

Fremdschlüsseleinschränkungen dienen lediglich Informationszwecken. Sie werden nicht vom System erzwungen, werden jedoch vom Planer verwendet.

Nutzungshinweise

Einschränkungen hinsichtlich Eindeutigkeit, Primärschlüssel und Fremdschlüssel dienen lediglich Informationszwecken. Sie werden von Amazon Redshift nicht erzwungen, wenn Sie eine Tabelle ausfüllen. Wenn Sie beispielsweise Daten in eine Tabelle mit Abhängigkeiten einfügen, kann der Einfügevorgang erfolgreich sein, auch wenn er gegen die Einschränkung verstößt. Dennoch werden Primärschlüssel und Fremdschlüssel als Planungshinweise verwendet und sollten deklariert werden, wenn Ihr ETL Prozess oder ein anderer Prozess in Ihrer Anwendung ihre Integrität erzwingt. Hinweise zum Entfernen einer Tabelle mit Abhängigkeiten finden Sie unter DROP TABLE.

Limits und Kontingente

Berücksichtigen Sie beim Erstellen einer Tabelle die folgenden Grenzwerte.

  • Es gibt eine Begrenzung für die maximale Anzahl von Tabellen in einem Cluster nach Knotentyp. Weitere Informationen finden Sie unter Limits im Amazon-Redshift-Verwaltungshandbuch.

  • Die maximale Anzahl von Zeichen für einen Tabellennamen ist 127.

  • Die maximale Anzahl der Spalten, die Sie in einer einzelnen Tabelle definieren können, ist 1.600.

  • Die maximale Anzahl von SORTKEY Spalten, die Sie in einer einzelnen Tabelle definieren können, beträgt 400.

Übersicht über Einstellungen auf Spalten- und Tabellenebene

Auf Spalten- oder Tabellenebene können verschiedene Attribute und Einstellungen festgelegt werden. In einigen Fällen hat die Festlegung eines Attributs oder einer Einschränkung auf der Spalten- oder Tabellenebene die gleiche Wirkung. In anderen Fällen führt dies zu unterschiedlichen Ergebnissen.

Die folgende Liste bietet eine Übersicht über Einstellungen auf Spalten- und Tabellenebene:

DISTKEY

Es gibt keinen Unterschied hinsichtlich der Wirkung, ob auf Spalten- oder ob auf Tabellenebene festgelegt.

Ob auf Spalten- oder Tabellenebene festgelegt DISTKEY ist, DISTSTYLE muss auf KEY oder gar nicht gesetzt werden. DISTSTYLEkann nur auf Tabellenebene festgelegt werden.

SORTKEY

Wenn auf Spaltenebene festgelegt, SORTKEY muss es sich um eine einzelne Spalte handeln. Wenn auf Tabellenebene festgelegt SORTKEY wird, können eine oder mehrere Spalten einen zusammengesetzten oder verschachtelten zusammengesetzten Sortierschlüssel bilden.

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

Amazon Redshift bietet keine Unterstützung für die Änderung der Groß-/Kleinschreibungskonfiguration für eine Spalte. Wenn Sie eine neue Spalte an die Tabelle anhängen, verwendet Amazon Redshift den Standardwert für die Unterscheidung von Groß- und Kleinschreibung. Amazon Redshift unterstützt das COLLATE Schlüsselwort beim Anhängen einer neuen Spalte nicht.

Weitere Informationen zur Erstellung von Datenbanken mit der Datenbanksortierung finden Sie unter CREATE DATABASE.

Informationen zu dieser COLLATE Funktion finden Sie unter. COLLATEFunktion

UNIQUE

Auf Spaltenebene können ein oder mehrere Schlüssel auf festgelegt werden. UNIQUE Die UNIQUE Einschränkung gilt für jede Spalte einzeln. Wenn auf Tabellenebene festgelegt UNIQUE wird, können eine oder mehrere Spalten eine zusammengesetzte UNIQUE Einschränkung bilden.

PRIMARY KEY

Wenn auf Spaltenebene festgelegt, PRIMARY KEY muss es sich um eine einzelne Spalte handeln. Wenn PRIMARY KEY es auf Tabellenebene festgelegt ist, können eine oder mehrere Spalten einen zusammengesetzten Primärschlüssel bilden.

FOREIGN KEY

Es gibt keinen Unterschied in der Wirkung, ob FOREIGN KEY es auf Spaltenebene oder auf Tabellenebene festgelegt wird. Auf Spaltenebene ist die Syntax einfach REFERENCES reftable [ ( refcolumn )].

Verteilung eingehender Daten

Wenn das Hash-Verteilungsschema der eingehenden Daten dem der Zieltabelle entspricht, ist keine physische Verteilung der Daten notwendig, wenn die Daten geladen werden. Wenn beispielsweise ein Verteilungsschlüssel für die neue Tabelle festgelegt wird und die Daten aus einer anderen Tabelle eingefügt werden, die anhand der gleichen Schlüsselspalte verteilt wird, werden die Daten unter Verwendung derselben Knoten und Slices entsprechend geladen. Wenn jedoch sowohl die Quell- als auch die Zieltabelle auf EVEN Verteilung eingestellt sind, werden die Daten in die Zieltabelle umverteilt.

Breite Tabellen

Möglicherweise können Sie eine sehr umfangreiche Tabelle erstellen, aber keine Abfrageverarbeitung, wie INSERT z. B. SELECT OR-Anweisungen, für die Tabelle durchführen. Die maximale Breite einer Tabelle mit Spalten mit fester Breite, z. B.CHAR, beträgt 64 KB — 1 (oder 65535 Byte). Wenn eine Tabelle VARCHAR Spalten enthält, kann die Tabelle eine größere deklarierte Breite haben, ohne dass ein Fehler zurückgegeben wird, da VARCHARS Spalten nicht ihre volle deklarierte Breite zum berechneten Grenzwert für die Abfrageverarbeitung beitragen. Das effektive Limit für die Abfrageverarbeitung bei VARCHAR Spalten hängt von einer Reihe von Faktoren ab.

Wenn eine Tabelle zu breit für das Einfügen oder Auswählen ist, wird folgender Fehler gemeldet.

ERROR: 8001 DETAIL: The combined length of columns processed in the SQL statement exceeded the query-processing limit of 65535 characters (pid:7627)

Beispiele

Beispiele, die zeigen, wie der CREATE TABLE Befehl verwendet wird, finden Sie im Beispiele Thema.