缺点是什么如果我改变SQL Server中现有列字段大小的字符大小?
答
假设你保持列相同的“类型”,所以你的意思是:
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()
次要的考虑,因为这些都是可变长度)。
额外的空间可以稍微增加查询的运行时间。存在边界最坏的情况,其中增加的空间意味着表格的数据页面不适合内存,并且您可能会遇到某些查询的颠簸情况。然而,这是不太可能的,并且无论如何会发生更多的行或页数较少的填充。
这也会影响使用这些列的索引。
只要确保现有数据没有被损坏或错误地输出,在增加列大小方面没有任何缺点。 –
@Kobydouek有没有改变这个字段的损坏?或者它会损坏整个表? –
什么是列类型? –