BIT类型在SQL Server中的存储大小
2008-08-26 09:56:02 来源:WEB开发网我这里返回的是0x76 00 00 00 01 00,这里需要反转过来看0x00 01 00 00 00 76。其中前两个字节是文件号,后面的是页面号,所以文件号是1,页面号是118(0x76转换成十进制就是118)
(3)使用DBCC page命令查看该页的内部结构:
DBCCtraceon(3604)
DBCCpage(TestDB,1,118,3)
这儿DBCC traceon(3604)表示将页面内容直接输出,TestDB是我创建的tt表所在的数据库,1和118前面已经说了。最后一个是打印选项。0表示只输出页头;1则不会输出所有内容,只是输出有数据的内容;2表示完整的输出这个页的内容,3则和1差不多,但是要每条记录分别列出列的值。以下是输出的需要关注的内容:
00000000:10000b0001000000016161030000††††††.........aa...
关于数据行的具体格式我就不在这里多说了,在《SQL Server 2005技术内幕 存储引擎》中有详细介绍。我们插入的数据从第5个字节开始,是01000000 016161。这儿01000000就是c1,由于是int类型,所以占用4个字节。接下来01就是c2,在这里占用了1字节。再接下来6161就是c3了。
2.多个BIT类型的列之间使用变长数据类型列分开,则去掉变长列,然后看连续的BIT类型列的个数,每列占用一个位,如果多余了8列那就再占用更多的字节。例如创建这样的表:
CREATETABLEvtt
(
c1BITNOTNULL,
c2VARCHAR(5)NOTNULL,
c3BITNOTNULL,
c4NVARCHAR(5)NULL,
c5BITNULL,
c6INTNOTNULL
)
这里将变长列筛选出来后就变成了c1、c3、c5、c6,有3个BIT类型列是连续的,所以c1、c3、c5将公用一个字节。接下来就来验证一下:
- ››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表' (数...
更多精彩
赞助商链接