下面是具體的過程:
1、備份資料
select * from bq_order into outfile '/home/admin/order.txt';
mysql> select * from bq_order into outfile '/home/admin/order.txt';
query ok, 10001000 rows affected (1 min 30.18 sec)
2、複製原表物理結構
create table bq_order_bak like bq_order;
3、執行表結構修改,這裡是增加索引
alter table ` bq_order_bak` add index ( `consulate` );
4、把原表資料匯入新錶
mysql> insert into bq_order_bak select * from bq_order;
query ok, 10001000 rows affected (6 min 10.30 sec)
records: 10001000 duplicates: 0 warnings: 0
5、刪除原表
drop table bq_order;
6、新錶重新命名原表
rename table bq_order_bak to bq_order;
注意:2、***大多數的alter table操作都會涉及lock-->copy to new table-->rename-->unlock的過程,鎖表時間會很長,而且alter table 的process不可被kill,一旦執行就不可回退。***
在mysql5.5和之前版本,在執行的生產環境對大表(超過數百萬紀錄)執行alter操作是一件很困難的事情。因為將重建表和鎖表,影響使用者者的使用。
從mysql5.6開始,online ddl特性被引進。增強了很多種類的alter table操作避免拷貝表和鎖表,在執行alter操作的同時允許執行select,insert,update,delete語句。因此在最新版本,我們可以通過使用algorithm和lock選項抑制檔案拷貝和加鎖。
但是即使在mysql5.6,仍然有一些alter操作(增加/刪除列,增加/刪除主鍵,改變資料型別等)需要重建
MySQL修改表結構操作命令總結
這篇文章主要介紹了mysql修改表結構操作命令總結,包含如刪除列 新增列 修改列 新增主鍵 刪除主鍵 新增唯一索引 新增普通索引等內容,需要的朋友可以參考下 表的結構如下 複製 如下 mysql show create table person person create table person ...
修改表結構
add column create definition first after column name 新增新字段 add index index name index col name,新增索引名稱 add primary key index col name,新增主鍵名稱 add unique...
修改表結構
1.alter操作表字段 1 增加字段 alter table 表名 add 欄位名 字段型別 alter table student add name varchar 10 2 修改字段 alter table 表名 change 舊欄位名 新欄位名 字段型別 alter table 表名 mod...