Sql server 减少了SQL中的行大小';缩小的桌子尺寸
有人能解释一下我在SQLServer2005中看到的一些行为吗 我的任务是缩小我们的数据库大小 该表包含近600万条记录,我将行大小计算为1990字节。我复制了一份表,通过各种技术将行大小减少到803字节 当我将原始表的数据大小(右键单击properties或sp_spaceused)与新表进行比较时,我发现只节省了21.7 MB。这与我的期望相差甚远 下面是我如何计算行大小的: 如果列为数字/十进制,则我使用MSDN大小(http://msdn.microsoft.com/en-us/library/ms187746.aspx),对于其他所有内容,我都使用syscolumns.length。如果该列可为空,我会额外添加一个字节 下面是我实现的一些更改Sql server 减少了SQL中的行大小';缩小的桌子尺寸,sql-server,sql-server-2005,Sql Server,Sql Server 2005,有人能解释一下我在SQLServer2005中看到的一些行为吗 我的任务是缩小我们的数据库大小 该表包含近600万条记录,我将行大小计算为1990字节。我复制了一份表,通过各种技术将行大小减少到803字节 当我将原始表的数据大小(右键单击properties或sp_spaceused)与新表进行比较时,我发现只节省了21.7 MB。这与我的期望相差甚远 下面是我如何计算行大小的: 如果列为数字/十进制,则我使用MSDN大小(http://msdn.microsoft.com/en-us/libr
p、 这不考虑任何索引。我认为您需要在表上重建聚集索引。问题是更改表不会回收任何空间。删除列仅符合逻辑,列是隐藏的,而不是删除的。修改列类型通常会导致添加新列并隐藏上一列。所有这些操作都会增加表的物理大小。要“真正”回收空间,您需要重建表。使用SQL 2008及更高版本,您将发布一个。在SQL2005中,您可以发布 可能是删除了一些行?您没有尝试执行数据库清理吗?请尝试重新调整到新表中。可能是未使用的空间尚未再次分配给空闲空间。只需将新的简化表复制到一个新表,然后看看会发生什么。也就是说:减少28MB是不值得的。如:如果这是节省,那么所讨论的权力会做出糟糕的优化动作。特别是给出了一些缺点。请给出前后的表格定义。不确定从何处计算这些行大小?
NULL\u位图
对每一列都有一位,不管它是否可为NULL,varchar列的最大长度不会影响行大小。里面的东西不知道。@Tom你真是太棒了。我选择了一个新表,它缩小了表的大小。这让我意识到我的测试是有缺陷的,因为当我进行第一轮测试时,我复制的表并没有接受它的主键。我添加了PK,大小减小到1.04GB。好多了!如果你发布一个答案,我会投你几分。