缺点是什么如果我改变SQL Server中现有列字段大小的字符大小?

问题描述:

我想增加现有表的列大小。我可以改变它。但我想知道它会在晚些时候给我解决问题吗?缺点是什么如果我改变SQL Server中现有列字段大小的字符大小?

因为它有什么缺点吗?

+0

只要确保现有数据没有被损坏或错误地输出,在增加列大小方面没有任何缺点。 –

+0

@Kobydouek有没有改变这个字段的损坏?或者它会损坏整个表? –

+0

什么是列类型? –

假设你保持列相同的“类型”,所以你的意思是:

alter table alter column col varchar(max); -- for some varchar 
alter table alter column col bigint;  -- where the column is a smaller int 

(这比OP的问题更普遍;我在标题中发现的问题具体是指字符数据)

然后就不太可能有“未来”的问题。任何现有的数据都应该适合“更大”的数据类型。

当您进行更改时,SQL Server可能需要重新构建数据库页面,因此可能需要一些时间。但是,这是一个短期的考虑,而不是一个长期的考虑。那么,有点短期。重组可能会导致碎片化 - 但这种情况在varchar()更改时不太可能发生。

如果任何列用于外键引用,您可能会发现无法进行更改 - 除非您删除外键约束并重建它。

显然,数据可能会占用更多的空间在磁盘上和存储器(尽管这是用于varchar()nvarchar()次要的考虑,因为这些都是可变长度)。

额外的空间可以稍微增加查询的运行时间。存在边界最坏的情况,其中增加的空间意味着表格的数据页面不适合内存,并且您可能会遇到某些查询的颠簸情况。然而,这是不太可能的,并且无论如何会发生更多的行或页数较少的填充。

这也会影响使用这些列的索引。