SQl服务器表使用太多的磁盘空间

我有两个相同的表在SQL Server的同一个实例上的两个单独的数据库中,定义如下(注意这是第三方软件,所以我不能改变表模式): –
编辑:[RouteParamXml] nvarchar NOT NULL始终是一个空string
编辑:所有的UserDef字段是空的string只有110行包含数据在SecondaryOrderID,ActionUserId和FIXBrokerOrderID都填充,我看不出有什么理由为什么空间差异是如此之大

CREATE TABLE blah( [AuditEventID] [int] NOT NULL, [ActionCode] [tinyint] NOT NULL, [ActionDate] [datetime] NOT NULL, [ActionUserID] [nvarchar](15) NOT NULL, [OrderID] [int] NOT NULL, [PlaceID] [int] NOT NULL, [FIXMsgType] [int] NOT NULL, [FIXOrderStatus] [int] NOT NULL, [FIXBrokerOrderID] [nvarchar](60) NOT NULL, [FilledQty] [float] NOT NULL, [Stamp] [varbinary](8) NOT NULL, [MarkForDelete] [smallint] NOT NULL, [NewOrderAuditTime] [datetime] NOT NULL, [ReplaceOrderAuditTime] [datetime] NOT NULL, [SendRecvTime] [datetime] NOT NULL, [QueueID] [int] NOT NULL, [SecondaryOrderID] [nvarchar](255) NOT NULL, [RouteParamXml] [nvarchar](max) NOT NULL, [UserDef1] [nvarchar](255) NOT NULL, [UserDef2] [nvarchar](255) NOT NULL, [UserDef3] [nvarchar](255) NOT NULL, [UserDef4] [nvarchar](255) NOT NULL, [UserDef5] [nvarchar](255) NOT NULL, [UserDef6] [nvarchar](255) NOT NULL, [FIXOrderID] [int] NOT NULL, [OrigFIXOrderID] [int] NOT NULL, CONSTRAINT [blah_PK] PRIMARY KEY CLUSTERED ( [OrderID] ASC, [PlaceID] ASC, [AuditEventID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY] ) ON [PRIMARY] 

一个表有130万行,使用大约22MB(兆字节)的磁盘空间另一个表有100万行,使用15GB(千兆字节)的磁盘空间

我一直在探讨各种DBCC选项,我看不到任何错误DBCC CHECKALLOC输出(好表)

 Index ID 1, partition ID 72057594188726272, alloc unit ID 72057594046316544 (type LOB data). FirstIAM (1:390). Root (1:389). Dpages 0. Index ID 1, partition ID 72057594188726272, alloc unit ID 72057594046316544 (type LOB data). 241 pages used in 29 dedicated extents. Index ID 1, partition ID 72057594188726272, alloc unit ID 72057594198687744 (type In-row data). FirstIAM (1:362878). Root (1:549074). Dpages 27571. Index ID 1, partition ID 72057594188726272, alloc unit ID 72057594198687744 (type In-row data). 27646 pages used in 3457 dedicated extents. Index ID 1, partition ID 72057594188726272, alloc unit ID 72057594198753280 (type Row-overflow data). FirstIAM (0:0). Root (0:0). Dpages 0. Index ID 1, partition ID 72057594188726272, alloc unit ID 72057594198753280 (type Row-overflow data). 0 pages used in 0 dedicated extents. 

DBCC CHECKALLOC输出(坏表)

 Index ID 1, partition ID 72057594188005376, alloc unit ID 72057594046316544 (type LOB data). FirstIAM (1:2845). Root (1:2844). Dpages 0. Index ID 1, partition ID 72057594188005376, alloc unit ID 72057594046316544 (type LOB data). 1880724 pages used in 235090 dedicated extents. Index ID 1, partition ID 72057594188005376, alloc unit ID 72057594197901312 (type In-row data). FirstIAM (1:1155704). Root (1:2024010). Dpages 25147. Index ID 1, partition ID 72057594188005376, alloc unit ID 72057594197901312 (type In-row data). 25216 pages used in 3153 dedicated extents. Index ID 1, partition ID 72057594188005376, alloc unit ID 72057594197966848 (type Row-overflow data). FirstIAM (0:0). Root (0:0). Dpages 0. Index ID 1, partition ID 72057594188005376, alloc unit ID 72057594197966848 (type Row-overflow data). 0 pages used in 0 dedicated extents. 

任何想法,我应该开始讨论为什么这张桌子如此之大

表中有什么数据?

我的直觉是,并不是所有的领域都被填满了小桌子。

统计显示“LOB数据”是主要区别; 每个MS ,这个桶包含:

页面包含varchar(max),nvarchar(max),varbinary(max),text,ntext,xml和图像数据。

换句话说,要长时间,严格的看这个专栏的内容:

 [RouteParamXml] [nvarchar](max)