有一个数据表,子段有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字段占用的的空间减少?

解决方案 »

  1.   

    稀疏列是对 null 值采用优化的存储方式的普通列。
    稀疏列减少了 null 值的空间需求,但代价是检索非 null 值的开销增加。当至少能够节省 20% 到 40% 的空间时,才应考虑使用稀疏列。-具体参看MSDN
      

  2.   

    VARCHAR不会乱占用你的存储空间.
      

  3.   

    表设计有问题。而且,VARCHAR应该不会浪费空间
      

  4.   

    NULL值不会占用多少空间的,它只是一个标记,占用一个Byte而已。
    如果空间占用很大,不一定是NULL值很多的原因吧
      

  5.   

    我是楼主
    回#5楼:
        非NULL的字段当然是随机的