0

alter table <> alter column<> SPARSE がケース 1 ~ 3 では効果がないのに、ケース 4 でのみ効果があるのはなぜですか? つまり、列は作成時にのみ SPARSE として宣言できると言えますか?

このコードは SQL2012 でテストしました。

-- 1
CREATE TABLE UnSparsed(ID INT IDENTITY(1,1),
FirstCol INT,
SecondCol VARCHAR(100),
ThirdCol SmallDateTime)
GO

INSERT INTO UnSparsed SELECT TOP 50000 NULL,NULL, NULL
FROM master..spt_values v1, 
     master..spt_values v2

GO
sp_spaceused 'UnSparsed'
GO
--- 2
alter table UnSparsed alter column FirstCol int SPARSE NULL
alter table UnSparsed alter column SecondCol VARCHAR(100) SPARSE NULL
alter table UnSparsed alter column ThirdCol SmallDateTime  SPARSE NULL
GO
sp_spaceused 'UnSparsed'
GO
--- 3
truncate table UnSparsed
GO
INSERT INTO UnSparsed SELECT TOP 50000 NULL,NULL, NULL
FROM master..spt_values v1, 
     master..spt_values v2

GO
sp_spaceused 'UnSparsed'
GO
DROP TABLE UnSparsed
GO
--- 4
CREATE TABLE UnSparsed(ID INT IDENTITY(1,1),
FirstCol INT SPARSE NULL,
SecondCol VARCHAR(100)  SPARSE NULL,
ThirdCol SmallDateTime  SPARSE NULL)
GO
INSERT INTO UnSparsed SELECT TOP 50000 NULL,NULL, NULL
FROM master..spt_values v1, 
     master..spt_values v2

GO
sp_spaceused 'UnSparsed'
GO

ここに画像の説明を入力

4

1 に答える 1