jhs*_*ets 2 sql-server clustered-index
CREATE TABLE [MYTABLE](
[ROW1] [numeric](18, 0) NOT NULL,
[ROW2] [numeric](18, 0) NOT NULL,
[ROW3] [numeric](18, 0) NOT NULL,
[ROW4] [numeric](18, 0) NULL,
CONSTRAINT [MYTABLE_PK] PRIMARY KEY CLUSTERED ([ROW1] ASC, [ROW2] ASC, [ROW3] ASC)
)
Run Code Online (Sandbox Code Playgroud)
该表有2个非聚集索引,以及以下统计信息:
RowCount: 5260744
Data Space: 229.609 MB
Index Space: 432.125 MB
Run Code Online (Sandbox Code Playgroud)
我想减小索引的大小,并使用代理主键作为聚簇索引,而不是自然复合键.
CREATE TABLE [dbo].[TEST_RUN_INFO](
[ROW1] [numeric](18, 0) NOT NULL,
[ROW2] [numeric](18, 0) NOT NULL,
[ROW3] [numeric](18, 0) NOT NULL,
[ROW4] [numeric](18, 0) NULL,
[ID] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [MYTABLE_PK] PRIMARY KEY CLUSTERED ([ID] ASC)
)
Run Code Online (Sandbox Code Playgroud)
仍然只有2个非聚集索引,这是新的统计数据:
RowCount: 5260744
Data Space: 249.117 MB
Index Space: 470.867 MB
Run Code Online (Sandbox Code Playgroud)
有人可以解释使用3个NUMERIC(18,0)列的聚簇索引如何小于使用单个INT列的聚簇索引吗?
我在更改之前和之后重建了索引,并且两个结构的填充因子都设置为0.
两个非聚集索引是相同的,并且未更改为包含新ID列.
使用ID列获取的统计信息
复合聚簇索引
INDEX TYPE DEPTH LEVEL PAGECOUNT RECORDCOUNT RECORDSIZE
1 CLUSTERED 3 0 31884 5260744 47
1 CLUSTERED 3 1 143 31884 34
1 CLUSTERED 3 2 1 143 34
5 NONCLUSTERED 3 0 27404 5260744 40
5 NONCLUSTERED 3 1 167 27404 46
5 NONCLUSTERED 3 2 1 167 46
6 NONCLUSTERED 3 0 27400 5260744 40
6 NONCLUSTERED 3 1 164 27400 46
6 NONCLUSTERED 3 2 1 164 46
Run Code Online (Sandbox Code Playgroud)
INT聚集索引
INDEX TYPE DEPTH LEVEL PAGECOUNT RECORDCOUNT RECORDSIZE
1 CLUSTERED 3 0 31887 5260744 47
1 CLUSTERED 3 1 54 31887 11
1 CLUSTERED 3 2 1 54 11
5 NONCLUSTERED 4 0 29893 5260744 44
5 NONCLUSTERED 4 1 198 29893 50
5 NONCLUSTERED 4 2 3 198 50
5 NONCLUSTERED 4 3 1 3 50
6 NONCLUSTERED 4 0 29891 5260744 44
6 NONCLUSTERED 4 1 193 29891 50
6 NONCLUSTERED 4 2 2 193 50
6 NONCLUSTERED 4 3 1 2 50
Run Code Online (Sandbox Code Playgroud)
聚簇索引叶子页包括表的所有列(而不仅仅是键列).通过添加代理主键,您只需将叶页中所有行的长度增加4个字节.将其乘以5,260,744行,相当于另外20 MB来存储ID列.
关键是更窄但是你可能会有更少的非叶级页面(用于sys.dm_db_index_physical_stats查看这个),并且由于聚簇索引键用作非聚簇索引中的行定位器,这可以使这些更小(但覆盖范围更小).
| 归档时间: |
|
| 查看次数: |
727 次 |
| 最近记录: |