Kompresi data dapat diatur di atas meja:
CREATE TABLE dbo.SomeTable(
SomeId [bigint] NOT NULL,
OtherId [bigint] NOT NULL,
IsActive [bit] NOT NULL,
CONSTRAINT [PK_Some] PRIMARY KEY CLUSTERED
(
SomeId Desc
)
) ON SomePartitionScheme(SomeId) WITH (DATA_COMPRESSION=PAGE)
Dan itu dapat didefinisikan pada kunci Utama:
CREATE TABLE dbo.SomeTable(
SomeId [bigint] NOT NULL,
OtherId [bigint] NOT NULL,
IsActive [bit] NOT NULL,
CONSTRAINT [PK_Some] PRIMARY KEY CLUSTERED
(
SomeId Desc
) WITH (DATA_COMPRESSION=PAGE)
) ON SomePartitionScheme(SomeId)
Tetapi jika Anda menaruhnya di kedua maka Anda mendapatkan kesalahan ini:
Opsi DATA_COMPRESSION ditentukan lebih dari satu kali untuk tabel, atau setidaknya salah satu partisi jika tabel dipartisi.
Apakah ada perbedaan untuk meletakkannya di PK vs di atas meja?
sql-server
sql-server-2012
compression
Gunung berapi
sumber
sumber
Jawaban:
Ini bukan masalah menempatkan kompresi pada kunci primer, melainkan masalah menempatkan kompresi pada indeks berkerumun . Untuk SQL Server, indeks berkerumun mengatur struktur fisik tabel pada indeks itu. Atau, dalam bentuk yang lebih pendek, indeks berkerumun adalah tabel. Ini berarti bahwa mengompresi indeks berkerumun dan mengompresi tabel secara fungsional setara. Jika Anda membuat kunci utama Anda sebagai indeks non-cluster dan menyimpan tabel dasar sebagai tumpukan, kedua struktur ini akan berbeda dan dikompresi secara terpisah.
sumber