我从服务器导出sql并导入到本地服务器。但是导入sql的时间太长了,我觉得跟索引有关。我可以导出不带索引的sql吗?导入sql之后,将索引应用于表。这可能吗?
slsn1g291#
从 mysqldump 文件编号:--禁用键,-k对于每个表,在insert语句周围加上/!40000 alter table tbl_name disable key/;和/!40000 alter table tbl_uname enable keys/;启用关键字;声明。这使得加载转储文件更快,因为索引是在插入所有行之后创建的。此选项仅对myisam表的非唯一索引有效。它对其他表没有影响。
mysqldump
w8ntj3qf2#
--disable-keys 仅适用于myisam表。我做了很多搜索,没有找到任何类似的方法来为innodb做这件事。我要做的是使用hexedit,按 Tab ,类型 / 当它找到 CREATE TABLE 对于引起问题的大表语句,我导航到 PRIMARY KEY / UNIQUE KEY / KEY 第二步,通过用空格替换来删除所有索引。保存文件后,加载转储,然后立即手动重新创建相同的索引。对于我的数据(150 gb和15亿行),它需要5个小时而不是15个小时。
--disable-keys
Tab
/
CREATE TABLE
PRIMARY KEY
UNIQUE KEY
KEY
2条答案
按热度按时间slsn1g291#
从
mysqldump
文件编号:--禁用键,-k
对于每个表,在insert语句周围加上/!40000 alter table tbl_name disable key/;和/!40000 alter table tbl_uname enable keys/;启用关键字;声明。这使得加载转储文件更快,因为索引是在插入所有行之后创建的。此选项仅对myisam表的非唯一索引有效。它对其他表没有影响。
w8ntj3qf2#
--disable-keys
仅适用于myisam表。我做了很多搜索,没有找到任何类似的方法来为innodb做这件事。我要做的是使用hexedit,按
Tab
,类型/
当它找到CREATE TABLE
对于引起问题的大表语句,我导航到PRIMARY KEY
/UNIQUE KEY
/KEY
第二步,通过用空格替换来删除所有索引。保存文件后,加载转储,然后立即手动重新创建相同的索引。对于我的数据(150 gb和15亿行),它需要5个小时而不是15个小时。