BIT类型在SQL Server中的存储大小
2008-08-26 09:56:02 来源:WEB开发网(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
)
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接