使用ALTER TABLE将varchar列调整为更大的大小是不是很糟糕?

Sum*_*umo 6 t-sql sql-server sql-server-2008-r2

我需要一个列的简单调整大小从VARCHAR(36)VARCHAR(40).

如果您尝试使用SQL Server企业管理器,它生成的脚本实际上是使用新结构创建一个新表,将现有表中的所有数据插入其中,删除现有表,重命名新表,并重新创建任何表索引.

如果您阅读文档(以及许多在线资源,包括SO),您可以使用ALTER语句进行调整大小.

是否ALTER以任何方式影响数据的存储方式?指标?统计?我想避免性能命中因为这个修改由于表可能变大.

gbn*_*gbn 13

只需使用ALTER TABLE.SSMS有时候有点呃傻

您需要删除并重新创建依赖约束(FK,唯一,索引,检查等)

但是,这只是一个元数据更改,对于任何大小的表都会非常快(除非您还将NOT NULL更改为NULL或将varchar更改为nvarchar等)

  • @gbn,恭喜达到100k. (2认同)

小智 5

不,ALTER TABLE( http://msdn.microsoft.com/de-de/library/ms190273.aspx ) 是 Microsoft 打算进行此类更改的方式。

如果您不向命令添加额外的选项,则不会损害任何索引或统计信息。也没有给出数据丢失的可能性,因为您只是使列更大。一切都应该没问题。