如果你是char/nchar这类定长的类型, 那不用说, 肯定占用.
如果你是其他数据类型, 则不占用空间.但要注意, 即使记录中的每个列都是NULL, 记录本身也要一个地址或者指针之类, 也会有空间开销.

解决方案 »

  1.   

    -- 下面的测试可以说明问题.USE tempdb
    GOSELECT a = CAST(NULL as int) INTO tb FROM syscolumns a, syscolumns b
    EXEC sp_spaceused 'tb'
    DROP TABLE tb
    GOSELECT a = CAST(NULL as varchar(8000)) INTO tb FROM syscolumns a, syscolumns b
    EXEC sp_spaceused 'tb'
    DROP TABLE tb
    GOSELECT TOP 1024 a = CAST(NULL as char(1024)) INTO tb FROM syscolumns a, syscolumns b
    EXEC sp_spaceused 'tb'
    DROP TABLE tb
    GOSELECT a = CAST(NULL as binary(2)) INTO tb FROM syscolumns a, syscolumns b
    EXEC sp_spaceused 'tb'
    DROP TABLE tb
      

  2.   

    MS官方很不推荐使用 nullable 的字段,因为它会对空间及性能带来额外的开销。--------------------------
    http://chinadba.cn
    深圳骄子数据库服务网
    最具实战经验的数据库优化、管理、设计、培训。
    ^^^老老实实做人,勤勤恳恳做事^^^