mysql大表更新或则增加字段方法

本文介绍了在MySQL中对大型表进行结构修改的方法,特别是针对包含上亿条记录的大表。通过创建临时表并逐步迁移数据的方式,可以有效减少对在线业务的影响。文章还提供了具体的SQL语句实例。
MYSQL大表修改结构
Posted on 2012-12-28 15:06 蛇小狼 阅读(43) 评论(0) 编辑 收藏
参考原理依据:

http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#alter-table

ALTER TABLE运行时会对原表进行临时复制,在副本上进行更改,然后删除原表,再对新表进行重命名。在执行ALTER TABLE时,其它用户可以阅读原表,但是对表的更新和修改的操作将被延迟,直到新表生成为止。新表生成后,这些更新和修改信息会自动转移到新表上。

注意,如果您在执行ALTER TABLE时使用除了RENAME以外的选项,则MySQL会创建一个临时表。即使数据并不需要进行复制(例如当您更改列的名称时),MySQL也会这么操作。对于MyISAM表,您可以通过把myisam_sort_buffer_size系统变量设置到一个较高的值,来加快重新创建索引(该操作是变更过程中速度最慢的一部分)的速度。

实际问题,对一个上亿数据的表增加字段

实际操作:

#####
create table ppy_myfishinstanceone_bak like ppy_myfishinstanceone;

alter table ppy_myfishinstanceone_bak add column `top_num` int(10) DEFAULT 0;

insert into ppy_myfishinstanceone_bak(member_id,my_fish_tank_id,fish_id,hungry,life,exp,last_calculated,last_potion_used)
select member_id,my_fish_tank_id,fish_id,hungry,life,exp,last_calculated,last_potion_used
from ppy_myfishinstanceone;

drop table ppy_myfishinstanceone;

rename table ppy_myfishinstanceone_bak to ppy_myfishinstanceone;
#####
### 在 MySQL 中添加新字段方法MySQL 中,可以使用 `ALTER TABLE` 语句来修改结构,包括向中添加新的字段。以下是添加新字段的语法和相关说明: #### 基本语法 ```sql ALTER TABLE 名 ADD 列名 数据类型 [约束条件] [FIRST | AFTER 已有列名]; ``` - **名**:需要修改的的名称。 - **列名**:要添加的新字段的名称。 - **数据类型**:指定新字段的数据类型,例如 `VARCHAR(255)`、`INT` 等。 - **约束条件**(可选):可以为新字段定义约束条件,例如 `NOT NULL`、`DEFAULT` 等。 - **FIRST**(可选):将新字段添加到的第一列位置。 - **AFTER 已有列名**(可选):将新字段添加到指定列之后的位置。 #### 示例代码 以下是一些常见的 `ALTER TABLE` 语句示例,用于向 MySQL 中添加新字段: 1. **在末尾添加新字段** ```sql ALTER TABLE 名 ADD 新字段名 数据类型; ``` 例如: ```sql ALTER TABLE users ADD age INT; -- 向 users 中添加一个名为 age 的整数字段[^3] ``` 2. **在的第一列位置添加新字段** ```sql ALTER TABLE 名 ADD 新字段名 数据类型 FIRST; ``` 例如: ```sql ALTER TABLE users ADD created_at DATETIME FIRST; -- 将 created_at 字段添加到的第一列[^3] ``` 3. **在指定列之后添加新字段** ```sql ALTER TABLE 名 ADD 新字段名 数据类型 AFTER 已有列名; ``` 例如: ```sql ALTER TABLE users ADD email VARCHAR(255) AFTER name; -- 将 email 字段添加到 name 字段之后 ``` 4. **为新字段设置默认值或约束** ```sql ALTER TABLE 名 ADD 新字段名 数据类型 [约束条件]; ``` 例如: ```sql ALTER TABLE users ADD is_active BOOLEAN DEFAULT TRUE NOT NULL; -- 添加一个布尔字段,并设置默认值为 TRUE ``` #### 注意事项 - 如果中已有量数据,添加新字段可能会对性能产生一定影响,尤其是在生产环境中执行此操作时需谨慎。 - 添加字段后,新字段的值对于现有记录将是 `NULL`(除非设置了默认值或指定了 `NOT NULL` 约束)。 ### 总结 通过 `ALTER TABLE` 语句,可以在 MySQL 中轻松添加新字段。根据需求,可以选择将新字段添加到的末尾、第一列或特定列之后,并为其指定数据类型和约束条件。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值