sql >> Databáze >  >> RDS >> Sqlserver

Jak povolit kompresi na existující tabulce v SQL Server (T-SQL)

Můžete použít ALTER TABLE příkaz povolit kompresi na existující tabulce na serveru SQL.

Chcete-li to provést, musíte použít REBUILD WITH a zároveň specifikujte požadovaný typ komprese.

Příklad

Zde je příklad k demonstraci.

ALTER TABLE Cats
REBUILD WITH (DATA_COMPRESSION = ROW);

V tomto případě jsem tabulku přestavěl pomocí komprese řádků.

Následující text jej znovu sestaví pomocí komprese stránky.

ALTER TABLE Cats
REBUILD WITH (DATA_COMPRESSION = PAGE);

Použít kompresi na jeden oddíl

Pokud je vaše tabulka rozdělena na oddíly, můžete určit oddíl, který se má znovu sestavit pomocí komprese.

ALTER TABLE Cats
REBUILD PARTITION = 1 WITH (DATA_COMPRESSION = ROW);

Jak odstranit kompresi

Kompresi můžete odstranit pomocí NONE jako typ komprese.

ALTER TABLE Cats
REBUILD WITH (DATA_COMPRESSION = NONE);

Tabulky sloupců

Pokud používáte tabulky columnstore (tabulky uložené s seskupeným indexem columnstore), výše uvedené typy komprese neplatí. V tomto případě jsou možnosti komprese COLUMNSTORE a COLUMNSTORE_ARCHIVE .

Omezení/omezení

U systémových tabulek nelze povolit kompresi.

Pokud je tabulka haldou (tabulkou bez seskupeného indexu), operace opětovného sestavení pro ONLINE režim bude jednovláknový. Pro operaci opětovného sestavení haldy s více vlákny použijte OFFLINE režimu.

Při používání dělených tabulek také platí následující omezení:

  • Pokud tabulka obsahuje nezarovnané indexy, nemůžete změnit nastavení komprese jednoho oddílu.
  • ALTER TABLE <table> REBUILD PARTITION ... syntaxe znovu sestaví zadaný oddíl.
  • ALTER TABLE <table> REBUILD WITH ... syntaxe znovu sestaví všechny oddíly.

  1. Mám specifikovat INDEX i UNIQUE INDEX?

  2. Rozdíl mezi #temptable a ##TempTable?

  3. Otázky k pohovoru Oracle

  4. MySQL mezi klauzulí není zahrnuto?