有一个数据表,子段有30多个,且每10秒插入一条记录,因此占用的磁盘空间非常大
但是每条记录中只有5个左右的字段是有数据的,其它字段都为空
请问有什么好方法可以节省存储空间?表的结构如下:
ID int 主键,自动递增
inserttime datetime 插入该记录的时间
data1 varchar(50)
data2 varchar(50)
data3 varchar(50)
……
data29 varchar(50)
data30 varchar(50)比较容易想到的就是改用两个表,表1存时间和列名,表2存表1的ID和字段名以及数值
但考虑到查询操作对速度的要求很高,担心这样做在速度上不允许
请问有什么好的解决方法?
比如说:有没有可能在表或者字段里加些什么设置使得NULL字段占用的的空间减少?
但是每条记录中只有5个左右的字段是有数据的,其它字段都为空
请问有什么好方法可以节省存储空间?表的结构如下:
ID int 主键,自动递增
inserttime datetime 插入该记录的时间
data1 varchar(50)
data2 varchar(50)
data3 varchar(50)
……
data29 varchar(50)
data30 varchar(50)比较容易想到的就是改用两个表,表1存时间和列名,表2存表1的ID和字段名以及数值
但考虑到查询操作对速度的要求很高,担心这样做在速度上不允许
请问有什么好的解决方法?
比如说:有没有可能在表或者字段里加些什么设置使得NULL字段占用的的空间减少?
稀疏列减少了 null 值的空间需求,但代价是检索非 null 值的开销增加。当至少能够节省 20% 到 40% 的空间时,才应考虑使用稀疏列。-具体参看MSDN
如果空间占用很大,不一定是NULL值很多的原因吧
回#5楼:
非NULL的字段当然是随机的