mysql如何為大表新增字段或索引
問題
mysql 為大表增加或增加索引等操作時,直接操作原表可能會因?yàn)閳?zhí)行超時而導(dǎo)致失敗。
解決辦法如下。
解決辦法
(1)建新表-復(fù)制表A 的數(shù)據(jù)結(jié)構(gòu),不復(fù)制數(shù)據(jù)
create table B like A;
(2)加字段或索引-表B加上新字段或索引
(3)導(dǎo)數(shù)據(jù)到新表-把原有數(shù)據(jù)導(dǎo)入新表
- 未新增字段時
insert into B select * from A [where 條件]
- 添加了新字段時。
- 假設(shè)添加字段名為data_code(默認(rèn)值為空),且字段位于id之后
insert into B select id, '' data_code, 其他舊字段 from A [where 條件]
數(shù)據(jù)量達(dá)到幾千萬時,可以添加where 條件,分批將數(shù)據(jù)導(dǎo)入到新表。防止數(shù)據(jù)導(dǎo)入超時。
(4)改表名-修改表A 的名稱為A_old,修改B表的表名為A
備注
- (1)MySQL查詢一個表中的所有字段的方法
select CONCAT(COLUMN_NAME ,',') from information_schema.COLUMNS where table_name = '表名' and table_schema = '庫名';
- (2)可以在idea中的database上執(zhí)行sql,上面可以設(shè)置執(zhí)行超時時間。

總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL之解決字符串?dāng)?shù)字的排序失效問題
這篇文章主要介紹了MySQL之解決字符串?dāng)?shù)字的排序失效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
淺析一個MYSQL語法(在查詢中使用count)的兼容性問題
本篇文章是對MYSQL語法(在查詢中使用count)的兼容性問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07
Mysql及Navicat中設(shè)置字段自動填充當(dāng)前時間及修改時間實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于Mysql及Navicat中設(shè)置字段自動填充當(dāng)前時間及修改時間實(shí)現(xiàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2023-07-07

