如何在没有索引的情况下导出/转储mysql

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

我从服务器导出sql并导入到我的本地。

但导入sql需要花费太多时间,我认为它与索引有关。

我可以导出没有索引的sql吗?

导入sql后,将索引应用于表。这可能吗?

提问于
用户回答回答于

--disable-keys仅适用于MyISAM表。我做了很多搜索,没有找到任何类似的方法为InnoDB做这个。

我所做的是使用hexedit,按Tab,类型/和表的名称,按Enter键,当它找到CREATE TABLE导致问题的大表的语句时,我导航到PRIMARY KEY/ UNIQUE KEY/ KEY秒并通过用空格替换它们来删除所有索引。保存文件后,加载转储,并在手动重新创建相同的索引后立即加载。对于我的数据(150 GB和15亿行),它需要5个小时而不是15个小时。

用户回答回答于

来自mysqldumpdoc:

--disable-keys,-K 对于每个表,用/ *!40000包围INSERT语句ALTER TABLE tbl_name DISABLE KEYS /; 和/!40000 ALTER TABLE tbl_name ENABLE KEYS * /; 声明。这样可以更快地加载转储文件,因为索引是在插入所有行之后创建的。此选项仅对MyISAM表的非唯一索引有效。它对其他表没有影响。

扫码关注云+社区

领取腾讯云代金券