PARTITION BY mit und ohne KEEP in Oracle
Beim Partitionieren von Daten in Oracle stehen zwei Hauptoptionen zur Verfügung: PARTITION BY und KEEP. Beide Optionen können verwendet werden, um Daten in kleinere Teilmengen zu gruppieren, haben jedoch unterschiedliche Auswirkungen auf die resultierenden Daten.
PARTITION BY
Die PARTITION BY-Klausel wird zum Teilen verwendet Eine Tabelle in kleinere Partitionen basierend auf einer oder mehreren Spalten. Die Daten in jeder Partition werden getrennt von den Daten in anderen Partitionen gespeichert. Dies kann die Leistung für bestimmte Arten von Abfragen verbessern, z. B. Abfragen, die Daten nach einem bestimmten Spaltenwert filtern.
Beispielsweise verwendet die folgende Abfrage die PARTITION BY-Klausel, um die Empl-Tabelle basierend auf der Abteilungsnummer in Partitionen zu unterteilen Spalte:
SELECT empno, deptno, sal, MIN(sal) OVER (PARTITION BY deptno) AS "Lowest", MAX(sal) OVER (PARTITION BY deptno) AS "Highest" FROM empl;
Diese Abfrage gibt das niedrigste und höchste Gehalt für jede Abteilung zurück. Die Daten für jede Abteilung werden in einer separaten Partition gespeichert, was die Leistung für Abfragen verbessert, die Daten nach Abteilung filtern.
KEEP
Die KEEP-Klausel wird verwendet, um Geben Sie an, welche Zeilen von jeder Partition beibehalten werden sollen. Die KEEP-Klausel kann entweder mit der PARTITION BY-Klausel oder der DISTINCT-Klausel verwendet werden.
Bei Verwendung mit der PARTITION BY-Klausel gibt die KEEP-Klausel an, welche Zeilen von jeder Partition beibehalten werden sollen. Die folgende Abfrage verwendet beispielsweise die KEEP-Klausel, um nur die erste Zeile jeder Partition zu behalten:
SELECT empno, deptno, sal, MIN(sal) OVER (PARTITION BY deptno) AS "Lowest", MAX(sal) OVER (PARTITION BY deptno) AS "Highest" FROM empl KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno);
Diese Abfrage gibt das niedrigste und höchste Gehalt für jede Abteilung zurück, aber nur die erste Zeile von jeder Partition. Dies kann für Abfragen nützlich sein, die eine begrenzte Anzahl von Zeilen zurückgeben müssen, oder für Abfragen, die Daten in einer bestimmten Reihenfolge zurückgeben müssen.
Unterschied zwischen PARTITION BY und KEEP
Der Hauptunterschied zwischen PARTITION BY und KEEP besteht darin, dass PARTITION BY die Daten in kleinere Partitionen aufteilt, während KEEP angibt, welche Zeilen von jeder Partition beibehalten werden sollen. PARTITION BY kann verwendet werden, um die Leistung für bestimmte Abfragetypen zu verbessern, während KEEP verwendet werden kann, um die Anzahl der von einer Abfrage zurückgegebenen Zeilen zu begrenzen oder Daten in einer bestimmten Reihenfolge zurückzugeben.
Das obige ist der detaillierte Inhalt vonWie unterscheiden sich die Klauseln „PARTITION BY' und „KEEP' bei der Datenpartitionierung von Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!