Erstellen komprimierter Tabellen und Indizes

SQL Server 2008 unterstützt sowohl die Zeilen- als auch die Seitenkomprimierung für Tabellen und Indizes. Die Datenkomprimierung kann für die folgenden Datenbankobjekte konfiguriert werden:

  • Vollständige, als Heaps gespeicherte Tabellen

  • Vollständige, als gruppierte Indizes gespeicherte Tabellen

  • Vollständige nicht gruppierte Indizes

  • Vollständige indizierte Sichten

  • Bei partitionierten Tabellen und Indizes kann die Komprimierungsoption für jede Partition konfiguriert werden, wobei die verschiedenen Partitionen eines Objekts nicht die gleiche Komprimierungseinstellung aufweisen müssen.

Die Komprimierungseinstellung einer Tabelle wird für die zugehörigen nicht gruppierten Indizes nicht automatisch übernommen. Jeder Index muss einzeln festgelegt werden. Für Systemtabellen ist die Komprimierung nicht verfügbar. Tabellen und Indizes können komprimiert werden, wenn sie mit der CREATE TABLE-Anweisung bzw. mit der CREATE INDEX-Anweisung erstellt wurden. Verwenden Sie die ALTER TABLE-Anweisung oder die ALTER INDEX-Anweisung, um den Komprimierungsstatus einer Tabelle, eines Indexes oder einer Partition zu ändern.

HinweisHinweis

Wenn die vorhandenen Daten fragmentiert sind, können Sie die Indexgröße möglicherweise ohne Komprimierung reduzieren, indem Sie den Index neu erstellen. Der Füllfaktor eines Indexes wird bei der Indexneuerstellung angewendet, wodurch sich die Indexgröße erhöhen kann. Weitere Informationen finden Sie unter Füllfaktor.

Überlegungen zur Verwendung von Zeilen- und Seitenkomprimierung

Beachten Sie die folgenden Punkte, wenn Sie die Zeilen- und Seitenkomprimierung verwenden:

  • Die Komprimierung ist nur in der Enterprise und Developer Edition von SQL Server 2008 verfügbar.

  • Die Komprimierung kann ermöglichen, dass mehr Zeilen auf einer Seite gespeichert werden, die maximale Zeilengröße einer Tabelle bzw. eines Indexes kann dadurch allerdings nicht geändert werden.

  • Eine Tabelle kann nicht komprimiert werden, wenn die maximale Zeilengröße einschließlich Verarbeitungsbytes die maximale Größe von 8060 Bytes überschreitet. Beispiel: Eine Tabelle mit den Spalten c1char(8000) und c2char(53) kann aufgrund der zusätzlichen Verarbeitungsbytes nicht komprimiert werden. Bei Verwendung des vardecimal-Speicherformats wird die Zeilengröße überprüft, wenn das Format aktiviert ist. Bei der Zeilen- und Seitenkomprimierung wird die Überprüfung der Zeilengröße durchgeführt, wenn das Objekt zuerst komprimiert wird und die Überprüfung beim Einfügen bzw. Ändern der einzelnen Zeilen erfolgt. Bei der Komprimierung gelten die folgenden zwei Regeln:

    • Ein Update für einen Datentyp mit fester Länge muss immer erfolgreich sein.

    • Die Deaktivierung der Datenkomprimierung muss immer erfolgreich sein. Selbst wenn die komprimierte Zeile auf die Seite passt, d. h. wenn ihre Größe weniger als 8060 Bytes beträgt, verhindert SQL Server Updates, die nicht in die unkomprimierte Zeile passen würden.

  • Bei Angabe einer Liste mit Partitionen kann der Komprimierungstyp für einzelne Partitionen auf ROW, PAGE oder NONE gesetzt werden. Ohne Angabe einer Liste mit Partitionen wird für alle Partitionen die in der Anweisung angegebene Datenkomprimierungseigenschaft festgelegt. Bei Erstellung einer Tabelle oder eines Indexes wird die Datenkomprimierung auf NONE festgelegt, falls nicht anders angegeben. Bei Änderung einer Tabelle wird die vorhandene Komprimierung beibehalten, falls nicht anders angegeben.

  • Wenn Sie eine Partitionsliste bzw. eine Partition außerhalb des zulässigen Bereichs angeben, wird ein Fehler generiert.

  • Nicht gruppierte Indizes erben die Komprimierungseigenschaft der Tabelle nicht. In diesem Fall müssen Sie die Komprimierungseigenschaft explizit festlegen, um die Indizes zu komprimieren. Standardmäßig wird die Komprimierungseinstellung bei Erstellung eines Indexes auf NONE festgelegt.

  • Wenn ein gruppierter Index auf einem Heap erstellt wird, erbt der gruppierte Index den Komprimierungsstatus des Heaps, sofern kein anderer Komprimierungsstatus angegeben wird.

  • Wenn ein Heap zur Komprimierung auf Seitenebene konfiguriert wird, erfolgt die Komprimierung auf Seitenebene für die Seiten ausschließlich mit folgenden Methoden:

    • Daten werden mit aktivierten Massenoptimierungen massenimportiert.

    • Die Daten werden eingefügt mit INSERT INTO ... WITH (TABLOCK)-Syntax.

    • Eine Tabelle wird durch Ausführung von ALTER TABLE ... erneut erstellt. REBUILD-Anweisung mit der PAGE-Komprimierungsoption.

  • Neue Seiten, die in einem Heap als Teil von DML-Vorgängen zugeordnet sind, verwenden die PAGE-Komprimierung erst nach der Neuerstellung des Heaps. Erstellen Sie den Heap neu, indem Sie die Komprimierung entfernen und neu anwenden oder indem Sie einen gruppierten Index erstellen und entfernen.

  • Zur Änderung der Komprimierungseinstellung für einen Heap müssen alle nicht gruppierten Indizes der Tabelle neu erstellt werden, sodass sie auf die neuen Zeilenpositionen im Heap zeigen.

  • Sie können die ROW- bzw. die PAGE-Komprimierung online oder offline aktivieren und deaktivieren. Die Online-Aktivierung der Komprimierung für einen Heap erfolgt mit einem einzelnen Thread.

  • Die Speicherplatzanforderungen zur Aktivierung bzw. Deaktivierung der Zeilen- oder Seitenkomprimierung entsprechen den Anforderungen zur Indexerstellung bzw. -neuerstellung. Für partitionierte Daten können Sie den erforderlichen Speicherplatz reduzieren, indem sie die Komprimierung für die Partitionen einzeln aktivieren bzw. deaktivieren.

  • Um den Komprimierungsstatus der Partitionen in einer partitionierten Tabelle zu ermitteln, fragen Sie die data_compression-Spalte der sys.partitions-Katalogsicht ab.

  • Bei der Indexkomprimierung können Seiten auf Blattebene sowohl mit der Zeilen- als auch mit der Seitenkomprimierung komprimiert werden. Für Seiten auf Nichtblattebene erfolgt keine Seitenkomprimierung.

  • Aufgrund ihrer Größe werden Datentypen mit umfangreichen Werten in einigen Fällen getrennt von den regulären Zeilendaten auf speziell dafür vorgesehenen Seiten gespeichert. Die Datenkomprimierung ist für getrennt gespeicherte Daten nicht verfügbar.

  • Für Tabellen, für die in SQL Server 2005 das vardecimal-Speicherformat implementiert wurde, wird diese Einstellung bei Durchführung eines Upgrades beibehalten. Sie können die Zeilenkomprimierung auf Tabellen mit dem vardecimal-Speicherformat anwenden. Da die Zeilenkomprimierung dem vardecimal-Speicherformat übergeordnet ist, besteht jedoch kein Grund, das vardecimal-Speicherformat beizubehalten. Der Komprimierungsgrad für Dezimalwerte wird durch die Kombination von vardecimal-Speicherformat und Zeilenkomprimierung nicht erhöht. Sie können die Seitenkomprimierung auf Tabellen mit dem vardecimal-Speicherformat anwenden, erzielen damit jedoch nicht unbedingt einen höheren Komprimierungsgrad für die Spalten im vardecimal-Speicherformat.

    HinweisHinweis

    SQL Server 2008 unterstützt das vardecimal-Speicherformat. Da mit der Zeilenkomprimierung jedoch dasselbe Ergebnis erzielt wird, wurde das vardecimal-Speicherformat als veraltet markiert. Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.

Implementierung von Komprimierung

Eine Übersicht über die Implementierung der Datenkomprimierung finden Sie unter Implementierung von Zeilenkomprimierung und Implementierung von Seitenkomprimierung.

Schätzen der Komprimierungseinsparungen

Mit der gespeicherten Prozedur sp_estimate_data_compression_savings können Sie ermitteln, wie sich eine Änderung des Komprimierungsstatus auf eine Tabelle oder einen Index auswirkt. Die gespeicherte Prozedur sp_estimate_data_compression_savings ist nur in den Editionen von SQL Server verfügbar, die Datenkomprimierung unterstützen.

Auswirkungen der Komprimierung auf partitionierte Tabellen und Indizes

Beachten Sie die folgenden Überlegungen, wenn Sie die Datenkomprimierung mit partitionierten Tabellen und Indizes verwenden:

  • Teilen eines Bereichs

    Wenn Sie Partitionen mit der ALTER PARTITION-Anweisung teilen, erben die geteilten Partitionen das Datenkomprimierungsattribut der ursprünglichen Partition.

  • Zusammenführen eines Bereichs

    Wenn Sie zwei Partitionen zusammenführen, erbt die zurückgegebene Partition das Datenkomprimierungsattribut der Zielpartition.

  • Wechseln von Partitionen

    Zum Wechseln einer Partition muss die Datenkomprimierungseigenschaft der Partition mit der Komprimierungseigenschaft der Tabelle übereinstimmen.

  • Neuerstellen von einer Partition oder allen Partitionen

    Zur Änderung der Komprimierung einer partitionierten Tabelle bzw. eines Indexes stehen zwei Syntaxvariationen zur Verfügung.

    • Mit der folgenden Syntax wird nur die referenzierte Partition neu erstellt:

      ALTER TABLE <table_name> 
      REBUILD PARTITION = 1 WITH (DATA_COMPRESSION =  <option>)
      
    • Mit der folgenden Syntax wird die gesamte Tabelle neu erstellt, wobei für nicht referenzierte Partitionen die vorhandene Komprimierungseinstellung verwendet wird:

      ALTER TABLE <table_name> 
      REBUILD PARTITION = ALL 
      WITH (DATA_COMPRESSION = PAGE ON PARTITIONS(<range>),
      ... )
      

    Für partitionierte Indizes gilt bei Verwendung von ALTER INDEX dasselbe Prinzip.

  • Löschen eines partitionierten gruppierten Indexes

    Beim Löschen eines gruppierten Indexes behalten die entsprechenden Heappartitionen ihre Einstellung für die Datenkomprimierung bei, sofern nicht das Partitionierungsschema geändert wird. Wenn das Partitionierungsschema geändert wird, werden alle Partitionen neu erstellt und erhalten einen unkomprimierten Status. Um einen gruppierten Index zu löschen und das Partitionierungsschema zu ändern, sind folgende Schritte erforderlich:

    1. Löschen Sie den gruppierten Index.

    2. Ändern Sie die Tabelle mit der Option ALTER TABLE ... REBUILD ... zur Angabe der Komprimierungsoption.

    OFFLINE können Sie einen gruppierten Index sehr schnell löschen, da lediglich die oberen Ebenen des gruppierten Indexes entfernt werden. Wenn ein gruppierter Index ONLINE gelöscht wird, muss SQL Server den Heap zweimal neu erstellen, ein Mal für Schritt 1 und ein Mal für Schritt 2.

Auswirkungen der Komprimierung auf die Replikation

Beachten Sie die folgenden Überlegungen, wenn Sie die Datenkomprimierung mit der Replikation verwenden:

  • Wenn der Snapshot-Agent das Anfangsschemaskript generiert, gilt für die Tabelle und die Indizes des neuen Schemas dieselbe Komprimierungseinstellung. Die Komprimierung kann nicht nur für die Tabelle aktiviert werden.

  • Bei Transaktionsreplikationen wird durch die Artikelschemaoption festgelegt, für welche abhängigen Objekte und Eigenschaften ein Skript erstellt werden muss. Weitere Informationen finden Sie unter sp_addarticle.

    Der Verteilungs-Agent überprüft bei der Anwendung von Skripts Abonnenten mit früheren Versionen nicht. Wenn die Replikation der Komprimierung ausgewählt wird, kann die Tabelle auf Abonnenten mit früheren Versionen nicht erstellt werden. Aktivieren Sie die Replikation der Komprimierung für heterogene Topologien nicht.

  • Bei Mergereplikationen überschreibt der Veröffentlichungskompatibilitätsgrad die Schemaoptionen und legt fest, für welche Schemaobjekte Skripts erstellt werden. Weitere Informationen zum Kompatibilitätsgrad finden Sie unter Verwenden mehrerer Versionen von SQL Server in einer Replikationstopologie.

    Bei heterogenen Topologien empfiehlt es sich, den Veröffentlichungskompatibilitätsgrad auf die frühere Abonnentenversion festzulegen, falls die neuen Komprimierungsoptionen nicht unterstützt werden müssen. Erforderlichenfalls können Sie Tabellen auf dem Abonnenten komprimieren, nachdem sie erstellt wurden.

Die folgende Tabelle enthält Replikationseinstellungen, mit denen die Komprimierung während der Replikation gesteuert wird.

Benutzerabsicht

Replizieren des Partitionsschemas für eine Tabelle bzw. einen Index

Replizieren der Komprimierungseinstellungen

Skriptverhalten

Zur Replikation des Partitionsschemas und zur Aktivierung der Komprimierung auf dem Abonnenten für die Partition.

True

True

Sowohl für das Partitionsschema als auch für die Komprimierungseinstellungen wird ein Skript erstellt.

Zur Replikation des Partitionsschemas ohne Komprimierung der Daten auf dem Abonnenten.

True

False

Für das Partitionsschema wird ein Skript erstellt, für die Komprimierungseinstellungen der Partition jedoch nicht.

Keine Replikation des Partitionsschemas und keine Komprimierung der Daten auf dem Abonnenten.

False

False

Weder für die Partition noch für die Komprimierungseinstellungen wird ein Skript erstellt.

Zur Komprimierung der Tabelle auf dem Abonnenten, wenn alle Partitionen auf dem Verleger komprimiert sind, ohne Replikation des Partitionsschemas.

False

True

Überprüft, ob alle Partitionen für die Komprimierung aktiviert wurden.

Skriptausgabe der Komprimierung auf Tabellenebene.

Auswirkungen der Komprimierung auf andere SQL Server-Komponenten

Die Komprimierung erfolgt im Speichermodul, und die Daten werden in den meisten anderen Komponenten von SQL Server im unkomprimierten Zustand dargestellt. Hierdurch werden die Auswirkungen der Komprimierung auf die anderen Komponenten auf folgende Punkte beschränkt:

  • Massenimport- und -exportvorgänge

    Exportierte Daten werden im unkomprimierten Zeilenformat ausgegeben. Dies gilt auch für systemeigene Datenformate. Aus diesem Grund kann die exportierte Datendatei erheblich größer sein als die Quelldaten.

    Beim Importieren von Daten werden die Daten im Speichermodul in das komprimierte Zeilenformat konvertiert, falls die Komprimierung in der Zieltabelle aktiviert wurde. Hierbei ist die CPU-Nutzung höher als beim Import von Daten in eine unkomprimierte Tabelle.

    Beim Massenimport von Daten in einen Heap mit Seitenkomprimierung wird versucht, die Daten beim Einfügen mit der Seitenkomprimierung zu komprimieren.

  • Die Komprimierung hat keine Auswirkungen auf Sicherungs- und Wiederherstellungsvorgänge.

  • Die Komprimierung hat keine Auswirkungen auf den Protokollversand.

  • Datenkomprimierung ist mit Spalten mit geringer Dichte nicht kompatibel. Daher können Tabellen, die Spalten mit geringer Dichte enthalten, nicht komprimiert werden. Auch können Spalten mit geringer Dichte einer komprimierten Tabelle nicht hinzugefügt werden.

  • Die Aktivierung der Komprimierung kann bewirken, dass sich Abfragepläne ändern, da die Daten mit einer anderen Anzahl von Seiten und Zeilen pro Seite gespeichert werden.

  • Die Datenkomprimierung wird von SQL Server Management Studio durch den Datenkomprimierungs-Assistenten unterstützt.

So starten Sie den Datenkomprimierungs-Assistenten

  • Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf eine Tabelle, einen Index oder eine indizierte Sicht, zeigen Sie auf Speicher, und klicken Sie dann auf Komprimieren.

Überwachen der Komprimierung

Zur Überwachung der gesamten Instanz von SQL Server verwenden Sie die Page compression attempts/sec- und Pages compressed/sec-Indikatoren von SQL Server, Access Methods Object.

Um eine Seitenkomprimierungsstatistik für einzelne Partitionen zu erhalten, führen Sie eine Abfrage der dynamischen Verwaltungsfunktion sys.dm_db_index_operational_stats durch.

Beispiele

Einige der folgenden Beispiele verwenden partitionierte Tabellen und erfordern eine Datenbank mit Dateigruppen. Zur Erstellung einer Datenbank mit Dateigruppen müssen Sie die folgende Anweisung ausführen.

CREATE DATABASE TestDatabase
ON  PRIMARY
( NAME = TestDatabase,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\TestDB.mdf'),
FILEGROUP test1fg
( NAME = TestDBFile1,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\TestDBFile1.mdf'),
FILEGROUP test2fg
( NAME = TestDBFile2,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\TestDBFile2.ndf'),
FILEGROUP test3fg
( NAME = TestDBFile3,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\TestDBFile3.ndf'),
FILEGROUP test4fg
( NAME = TestDBFile4,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\TestDBFile4.ndf') ;
GO

So wechseln Sie zu der neuen Datenbank:

USE TestDatabase
GO

A. Erstellen einer Tabelle, in der Zeilenkomprimierung verwendet wird

Mit dem folgenden Beispiel wird eine Tabelle erstellt, und die Komprimierung wird auf ROW festgelegt.

CREATE TABLE T1 
(c1 int, c2 nvarchar(50) )
WITH (DATA_COMPRESSION = ROW);
GO

B. Erstellen einer Tabelle, in der Seitenkomprimierung verwendet wird

Mit dem folgenden Beispiel wird eine Tabelle erstellt, und die Komprimierung wird auf PAGE festgelegt.

CREATE TABLE T2 
(c1 int, c2 nvarchar(50) )
WITH (DATA_COMPRESSION = PAGE);
GO

C. Festlegen der DATA_COMPRESSION-Option für eine partitionierte Tabelle

Im folgenden Beispiel wird die TestDatabase-Tabelle verwendet, die mit dem weiter oben in diesem Abschnitt bereitgestellten Code erstellt wurde. In dem Beispiel werden zunächst eine Partitionsfunktion und ein Partitionsschema erstellt. Anschließend wird eine partitionierte Tabelle erstellt, und die Komprimierungsoptionen für die einzelnen Partitionen der Tabelle werden angegeben. In diesem Beispiel wird Partition 1 für die ROW-Komprimierung konfiguriert, und die restlichen Partitionen werden für die PAGE-Komprimierung konfiguriert.

So erstellen Sie eine Partitionsfunktion:

CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES (1, 100, 1000) ;
GO

So erstellen Sie ein Partitionsschema:

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg) ;
GO

So erstellen Sie eine partitionierte Tabelle mit komprimierten Partitionen:

CREATE TABLE PartitionTable1 
(col1 int, col2 varchar(max))
ON myRangePS1 (col1) 
WITH 
(
  DATA_COMPRESSION = ROW ON PARTITIONS (1),
  DATA_COMPRESSION = PAGE ON PARTITIONS (2 TO 4)
);
GO

D. Festlegen der DATA_COMPRESSION-Option für eine partitionierte Tabelle

Im folgenden Beispiel wird die gleiche Datenbank verwendet wie in Beispiel C. Es wird eine Tabelle mit der Syntax für nicht zusammenhängende Partitionen erstellt.

CREATE TABLE PartitionTable2 
(col1 int, col2 varchar(max))
ON myRangePS1 (col1) 
WITH 
(
  DATA_COMPRESSION = ROW ON PARTITIONS (1,3),
  DATA_COMPRESSION = NONE ON PARTITIONS (2,4)
);
GO

E. Ändern einer Tabelle zur Änderung der Komprimierung

Im folgenden Beispiel wird die Komprimierung der nicht partitionierten Tabelle geändert, die in Beispiel A erstellt wurde.

ALTER TABLE T1 
REBUILD WITH (DATA_COMPRESSION = PAGE);
GO

F. Ändern der Komprimierung einer Partition in einer partitionierten Tabelle

Im folgenden Beispiel wird die Komprimierung der partitionierten Tabelle geändert, die in Beispiel C erstellt wurde. Die REBUILD PARTITION = 1-Syntax bewirkt, dass nur die Partition 1 neu erstellt wird.

ALTER TABLE PartitionTable1 
REBUILD PARTITION = 1 WITH (DATA_COMPRESSION =  NONE) ;
GO

Mit der folgenden alternativen Syntax werden im gleichen Vorgang alle Partitionen in der Tabelle neu erstellt.

ALTER TABLE PartitionTable1 
REBUILD PARTITION = ALL 
WITH (DATA_COMPRESSION = PAGE ON PARTITIONS(1) ) ;
GO

G. Ändern der Komprimierung mehrerer Partitionen in einer partitionierten Tabelle

Mit der REBUILD PARTITION = ...-Syntax kann nur eine Partition neu erstellt werden. Zur Neuerstellung mehrerer Partitionen müssen Sie mehrere Anweisungen ausführen oder alle Partitionen neu erstellen wie im folgenden Beispiel, wobei die aktuelle Komprimierungseinstellung für Partitionen ohne Angabe verwendet wird.

ALTER TABLE PartitionTable1 
REBUILD PARTITION = ALL 
WITH
(
DATA_COMPRESSION = PAGE ON PARTITIONS(1), 
DATA_COMPRESSION = ROW ON PARTITIONS(2 TO 4) 
) ;
GO

H. Ändern der Komprimierung für einen Index

Im folgenden Beispiel wird die in Beispiel A erstellte Tabelle verwendet und ein Index für die Spalte C2 erstellt.

CREATE NONCLUSTERED INDEX IX_INDEX_1 
    ON T1 (C2) 
WITH ( DATA_COMPRESSION = ROW ) ; 
GO

Führen Sie den folgenden Code aus, um die Einstellung für den Index in Seitenkomprimierung zu ändern:

ALTER INDEX IX_INDEX_1 
ON T1
REBUILD WITH ( DATA_COMPRESSION = PAGE ) ;
GO

I. Ändern der Komprimierung einer Partition in einem partitionierten Index

Im folgenden Beispiel wird ein Index für eine partitionierte Tabelle mit Zeilenkomprimierung für alle Partitionen des Indexes erstellt.

CREATE CLUSTERED INDEX IX_PartTab2Col1
ON PartitionTable1 (Col1)
WITH ( DATA_COMPRESSION = ROW ) ;
GO

Um den Index mit verschiedenen Komprimierungseinstellungen für die einzelnen Partitionen zu erstellen, verwenden Sie die ON PARTITIONS-Syntax. Im folgenden Beispiel wird ein Index für eine partitionierte Tabelle erstellt, wobei für Partition 1 des Indexes die Zeilenkomprimierung und für die Partitionen 2 bis 4 die Seitenkomprimierung verwendet wird.

CREATE CLUSTERED INDEX IX_PartTab2Col1
ON PartitionTable1 (Col1)
WITH (DATA_COMPRESSION = ROW ON PARTITIONS(1),
    DATA_COMPRESSION = PAGE ON PARTITIONS (2 TO 4 ) ) ;
GO

Im folgenden Beispiel wird die Komprimierung des partitionierten Indexes geändert.

ALTER INDEX IX_PartTab2Col1 ON PartitionTable1
REBUILD PARTITION = ALL 
WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS(1) ) ;
GO

J. Ändern der Komprimierung mehrerer Partitionen in einem partitionierten Index

Mit der REBUILD PARTITION = ...-Syntax kann nur eine Partition neu erstellt werden. Zur Neuerstellung mehrerer Partitionen müssen Sie mehrere Anweisungen ausführen oder alle Partitionen neu erstellen wie im folgenden Beispiel, wobei die aktuelle Komprimierungseinstellung für Partitionen ohne Angabe verwendet wird.

ALTER INDEX IX_PartTab2Col1 ON PartitionTable1
REBUILD PARTITION = ALL 
WITH
(
DATA_COMPRESSION = PAGE ON PARTITIONS(1), 
DATA_COMPRESSION = ROW ON PARTITIONS(2 TO 4) 
) ;
GO