WEB开发网
开发学院数据库MSSQL Server BIT类型在SQL Server中的存储大小 阅读

BIT类型在SQL Server中的存储大小

 2008-08-26 09:56:02 来源:WEB开发网   
核心提示: (1)插入一条示例数据:INSERTINTOvttVALUES(1,'abc',1,N'xyz',0,1023)(2)用前面用的SQL语句,同样的方法,BIT类型在SQL Server中的存储大小(3),找出vtt表的第一页为:0xC00000000100,

(1)插入一条示例数据:

INSERTINTOvttVALUES(1,'abc',1,N'xyz',0,1023)

(2)用前面用的SQL语句,同样的方法,找出vtt表的第一页为:0xC00000000100,对应的就是文件号1,页号192

(3)查看该页的内部数据:

 00000000:3000090003ff03000006000002001500†0..............
  00000010:1b00616263780079007a00†††††††††††††..abcx.y.z.

插入的数据从第5个字节开始03ff…… 这儿03就是c1、c3、c5的数据,03转换成二进制就是00000011。c1列对应最低位1,c3对应倒数第二位1,c5对应倒数第三位0。接下来的ff就是c6的值1023。后面的就是列数、NULL位图、变长列等,这里是讨论BIT位占用空间的,所以就不讲解后面这些了。

3.一个表中有多个BIT类型的列,其顺序是否连续决定了BIT位是否可以共享一个字节。SQL Server中按照列顺序存储,第一列和最后一列都是BIT数据类型列,不可以共用一个字节。

也就是说下面的表t1和表t2占用的空间是不同的,t1数据占用了7字节,t2数据占用了8字节。

   CREATETABLEt1
  (
  c1INTPRIMARYKEY,
  c2BITNOTNULL,
  c3BITNOTNULL,
  c4CHAR(2)NOTNULL
  )
  CREATETABLEt2
  (
  c1INTPRIMARYKEY,
  c2BITNOTNULL,
  c4CHAR(2)NOTNULL,
  c3BITNOTNULL
  )

但是在下面的t3和t4表中,由于中间是变长数据类型,所以他们的BIT列占用的数据空间是相同的。

   CREATETABLEt3 
  ( 
  c1INTNOTNULL, 
  c2BITNOTNULL, 
  c3VARCHAR(2)NOTNULL, 
  c4BITNOTNULL 
  )
  CREATETABLEt4
  (
  c1INTNOTNULL,
  c2BITNOTNULL,
  c4BITNOTNULL,
  c3VARCHAR(2)NOTNULL
  )

上一页  1 2 3 

Tags:BIT 类型 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接