Delen via


COMPRESS (Transact-SQL)

Van toepassing op: SQL Server 2016 (13.x) en latere versies Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics SQL Analytics-eindpuntin Microsoft FabricWarehouse in Microsoft FabricSQL Database in Microsoft Fabric SQL Database in Microsoft Fabric

Met deze functie wordt de invoerexpressie gecomprimeerd met behulp van het Gzip-algoritme . De functie retourneert een bytematrix van het type varbinary(max).

Transact-SQL syntaxis-conventies

Syntaxis

COMPRESS ( expression )

Arguments

expressie

Een expressie van een van de volgende gegevenstypen:

  • binary(n)
  • char(n)
  • nchar(n)
  • nvarchar(max)
  • nvarchar(n)
  • varbinary(max)
  • varbinary(n)
  • varchar(max)
  • varchar(n)

Zie Expressies voor meer informatie.

Retourtypen

varbinary(max), die de gecomprimeerde inhoud van de invoer vertegenwoordigt.

Opmerkingen

Gecomprimeerde gegevens kunnen niet worden geïndexeerd.

De COMPRESS functie comprimeert de invoerexpressiegegevens. U moet deze functie aanroepen voor elke gegevenssectie om te comprimeren. Zie Gegevenscompressie voor meer informatie over automatische gegevenscompressie tijdens opslag op rij- of paginaniveau.

Voorbeelden

Eén. Gegevens comprimeren tijdens het invoegen van tabellen

In dit voorbeeld ziet u hoe u gegevens die zijn ingevoegd in een tabel comprimeert:

INSERT INTO player (
    name,
    surname,
    info
)
VALUES (
    N'Ovidiu',
    N'Cracium',
    COMPRESS(N'{"sport":"Tennis","age": 28,"rank":1,"points":15258, "turn":17}')
);

INSERT INTO player (
    name,
    surname,
    info
)
VALUES (
    N'Michael',
    N'Raheem',
    COMPRESS(@info)
);

B. Gecomprimeerde versie van verwijderde rijen archiveren

Met deze instructie worden eerst oude spelerrecords uit de player tabel verwijderd. Als u ruimte wilt besparen, worden de records in de inactivePlayer tabel opgeslagen in een gecomprimeerde indeling.

DELETE FROM player
OUTPUT
    deleted.id,
    deleted.name,
    deleted.surname,
    deleted.datemodifier,
    COMPRESS(deleted.info)
INTO dbo.inactivePlayers
WHERE datemodified < @startOfYear;