首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

一个字节造成差异:SQLServer存储结构

2008-12-03 
SQL Server内部存储结构
    关于SQL Server内部存储结构的,我觉得挺有意思,所以写下这篇博客讨论并归纳了一下。问题是这样的:

  首先我们创建两张表,一张表的列长度是4039字节,另一张表的长度是4040字节,他们就只有一个字节的差距,比如以下创建表的SQL:

  CREATE TABLE tb4039(c1 INT IDENTITY,c2 char(4035) not null)

  CREATE TABLE tb4040(c1 INT IDENTITY,c2 char(4036) not null)

  由于INT类型是4个字节,所以我们创建的tb4039表有4+4035=4039个字节的长度,tb4040中的c2字段比tb4039中的c2字段多了一个字节,总长度是4040字节,其他没有区别了。接下来是向这两个表中插入数据,比如插入100条数据,SQL语句是:

  DECLARE @i INT

  SET @i=1

  WHILE @i<=100

  BEGIN

  INSERT INTO tb4039 (c2) VALUES('test'+CONVERT(VARCHAR(5),@i));

  INSERT INTO tb4040 (c2) VALUES('test'+CONVERT(VARCHAR(5),@i));

  SET @i=@i+1

  END

  使用SSMS来查看一下这两个表的空间占用量,如果是SQL2005,那么可以使用SSMS自带的报表查看,如果是SQL2008,那么直接使用对象资源管理器详细信息界面进行查看(如果使用的是SQL2008而不知道怎么查看表空间使用量那么请查看我以前写的一篇博客:SQL Server 2008新特性之SSMS增强)。
热点排行