-- 创建2个测试表
CREATE TABLE [dbo].[Table_2019]([Data] [nchar](2019) NOT NULL)
CREATE TABLE [dbo].[Table_2020]([Data] [nchar](2020) NOT NULL)
go
-- 填充数据
declare @i int
set @i = 0
while(@i < 20)
begin
insert Table_2019(Data) values('')
insert Table_2020(Data) values('')
select @i = @i + 1
end
go 执行sp_spaceused后产生结果如下:Table Name # Records Reserved (KB) Data (KB) Indexes (KB) Unused (KB)
dbo.Table_2020 20 200 160 8 32
dbo.Table_2019 20 136 80 8 48 两个表同样20条记录。Table_2020 表数据占了 160kb ,即 20 个数据页。
Table_2019 表数据占了 80 kb,即 10 个数据页。
为何这样? 麻烦解释下 .
CREATE TABLE [dbo].[Table_2019]([Data] [nchar](2019) NOT NULL)
CREATE TABLE [dbo].[Table_2020]([Data] [nchar](2020) NOT NULL)
go
-- 填充数据
declare @i int
set @i = 0
while(@i < 20)
begin
insert Table_2019(Data) values('')
insert Table_2020(Data) values('')
select @i = @i + 1
end
go 执行sp_spaceused后产生结果如下:Table Name # Records Reserved (KB) Data (KB) Indexes (KB) Unused (KB)
dbo.Table_2020 20 200 160 8 32
dbo.Table_2019 20 136 80 8 48 两个表同样20条记录。Table_2020 表数据占了 160kb ,即 20 个数据页。
Table_2019 表数据占了 80 kb,即 10 个数据页。
为何这样? 麻烦解释下 .
[nchar](2019)在一页里,一页是8K的大小,一条记录一页就可以了
但[nchar](2020)就要两页才可以放一条记录
所以后面的空间就是前面的两倍了
[nchar](2019)在一页里,一页是8K的大小,一条记录一页就可以了
但[nchar](2020)就要两页才可以放一条记录
所以后面的空间就是前面的两倍了
/*
name rows reserved data index_size unused
Table_2019 20 200 KB 160 KB 8 KB 32 KBname rows reserved data index_size unused
Table_2020 20 200 KB 160 KB 8 KB 32 KB
*/
/*
name rows reserved data index_size unused
Table_2019 20 200 KB 160 KB 8 KB 32 KBname rows reserved data index_size unused
Table_2020 20 200 KB 160 KB 8 KB 32 KB
*/
/*
name rows reserved data index_size unused
Table_2019 20 200 KB 160 KB 8 KB 32 KBname rows reserved data index_size unused
Table_2020 20 200 KB 160 KB 8 KB 32 KB
*/
http://topic.csdn.net/u/20080917/10/3225a218-55b2-40ab-90b0-dc68f677cedc.html