sql server 修改表字段长度耗时问题分析
产品报了一个bug,保存某个单据时报错,数据库错误。本地调试后发现是某个表字段长度不够导致,所以解决起来很简单,优化下长度即可,通过ALTER TABLE修改表字段长度。
通常这么做无可厚非,字段不够当然是加字段了。不过随着业务量的提升,很多看似简单的问题在处理起来的时候,也许并不简单!
语法如下:
ALTER TABLE 表 ALTER COLUMN 字段 类型
在执行过程中,需要考到执行时间,有些SQL是在程序里连接数据库跑的,如果执行时间过程会报超时。而这里的SQL,如果表数据不多,一般很快,但是如果表的数据量大,上百万,千万,甚至有索引的情况下,就会很耗时了。
具体耗时要看数据库的实际情况,笔者测这边的测试库,2w多条数据6s左右。
当然了,如果实在耗时久,可以通过换表的方式处理,思路就是新建个表,把旧表copy过去,再删除旧表,新表改名。
国内相关的资料太难查找,这里列出一些搜集的资料给大家参考:
更改大表中的列:案例研究 |SQL 研究 (sqlstudies.com)
[已解决]当我更改 MS SQL Server 2014 的表时会发生什么情况 - CodeProject
KB2986423 - 修复:当行大小超过允许的最大大小时,向表添加新列需要很长时间 - Microsoft 支持
ALTER COLUMN 性能下降 – SQLServerCentral 论坛
如何加快在 Sql Server 中向大表添加列的速度 - 服务器故障 (serverfault.com)
在超大表上扩展列长度 – SQLServerCentral 论坛
PS:转载请注明来源 https://www.cnblogs.com/sunshine-wy,疑问和勘误可在下方留言。