日期:2014-05-18  浏览次数:20481 次

大表增加含默认值的字段会使整个数据库的访问都变慢!!!
现在需要向一个百万级的表中增加一字段,并设置其默认值,

无论用SQL语句还是直接修改表结构,都会使整个数据库的访问变慢,

非常影响使用,不知道大家有什么办法避免?

------解决方案--------------------
SQL code
alter table Tablename add columnname int default(0) not null

------解决方案--------------------
应该差不了多少

或者
SQL code
insert into newTable
select * ,getdate() from oldTable

------解决方案--------------------
此库为运行库?
避开访问高峰期进行调整,100W应该也还好
------解决方案--------------------
探讨
不知道向大表增加含默认值列时,数据库是不是按下面的步骤:
1、先增加一列,此列默认值为NULL;
2、逐行更改已存在行,即把NULL 改为 0(假设为整);此处使数据库访问变慢吗?
3、在新增加列上做规定,以后插入值默认值必须为0;

------解决方案--------------------
只能错开高峰时段执行。
------解决方案--------------------
这种更新都是放到后半夜维护时候用。

------解决方案--------------------
探讨
SOHU/SINA也是这么做吗?

------解决方案--------------------
我也想知道
------解决方案--------------------
探讨

引用:

只能错开高峰时段执行。

SOHU/SINA也是这么做吗?

------解决方案--------------------
探讨

引用:

一般大项目都会在建表之初会预留一些字段出来,待后续使用的。


不是我抬杠,预留字段总有用完的一天,

------解决方案--------------------
你要知道他们是有好多服务器做集群的,对外就是透明的,可以先在一台服务器上部署以后,直接切换一个连接即可。