首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将列添加到具有longblob的大表中的最佳方法

将列添加到具有longblob的大表中的最佳方法
EN

Stack Overflow用户
提问于 2015-08-31 14:56:02
回答 1查看 985关注 0票数 2

我有下表:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS PDF_STORAGE (
  ID_PDF_STORAGE bigint(20) NOT NULL AUTO_INCREMENT,
  DESC_FILE varchar(255) DEFAULT NULL,
  PDF_FILE longblob,
  LINK_FILE varchar(255) DEFAULT NULL,
  VERSION int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (ID_PDF_STORAGE)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

其中PDF_FILE是一个平均10 MB的文件。今天,它大约有50.000排。我需要在这个表中添加一个新的列,但是它需要很长的时间,超过10分钟,有时在PhpMyAdmin中出现401错误,所以我想知道实现这个错误的正确方法是什么…

我已经试过了

代码语言:javascript
复制
ALTER TABLE  PDF_STORAGE ADD  VERSION INT NOT NULL DEFAULT  '0' AFTER  LINK_FILE ;

代码语言:javascript
复制
SET FOREIGN_KEY_CHECKS=0;
CREATE TABLE PDF_STORAGE_new LIKE PDF_STORAGE;
ALTER TABLE PDF_STORAGE_new ADD  VERSION INT NOT NULL DEFAULT  '0' AFTER  LINK_FILE ;
INSERT INTO PDF_STORAGE_new (PDF_STORAGE, DESC_FILE, ID_PDF_STORAGE, LINK_FILE) SELECT * FROM PDF_STORAGE;
RENAME TABLE PDF_STORAGE TO PDF_STORAGE_old, PDF_STORAGE_new TO PDF_STORAGE;
DROP TABLE PDF_STORAGE_old;
SET FOREIGN_KEY_CHECKS = 1;

但他们也很慢..。有更好的办法吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-31 15:15:57

您现在所做的ALTER TABLE是了解我知识的最佳方法。当没有多少事务(或) DB操作时,您可以尝试进行此更改。我是说,在空闲时间做些改变。

代码语言:javascript
复制
ALTER TABLE  PDF_STORAGE ADD  VERSION INT NOT NULL DEFAULT  '0' AFTER  LINK_FILE ;

您还可以创建一个与此表模式相同的新表以及新列。

将此表中的所有记录插入新创建的表中。

将新表重命名为旧表名。

删除旧表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32314159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档