-- 创建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 个数据页。
为何这样? 麻烦解释下 . 

解决方案 »

  1.   

    这个是数据库里的页的问题,
    [nchar](2019)在一页里,一页是8K的大小,一条记录一页就可以了
    但[nchar](2020)就要两页才可以放一条记录
    所以后面的空间就是前面的两倍了
      

  2.   

    这个是数据库里的页的问题,
    [nchar](2019)在一页里,一页是8K的大小,一条记录一页就可以了
    但[nchar](2020)就要两页才可以放一条记录
    所以后面的空间就是前面的两倍了
      

  3.   


    /*
    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
    */
      

  4.   


    /*
    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
    */
      

  5.   


    /*
    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
    */
      

  6.   

    nchar字段是固定长度的,应该和字段类型有关系。
      

  7.   

    历史贴
    http://topic.csdn.net/u/20080917/10/3225a218-55b2-40ab-90b0-dc68f677cedc.html