我计划在我的简单数据库表中插入大约1亿行,其中第一列是索引varchar(256)(参见下面的col1),为了使插入更快,我在插入之前发出了禁用键语句。所以我的过程是这样的:
alter table xxx disable keys; insert ignore into xxx(col1, col2) values('a',1), values('b',1), values('c',1)... alter table xxx enable keys;
我使用上述语句一次插入100万个(因此约有100万个值对)
前15百万的速度非常快且恒定(在百万分之30秒的合理速度范围内),然而,现在我开始了另一个将大约1密耳插入xxx的过程,它需要永远(一小时进入它和还没有完成)。
我错过了什么吗?有什么需要调整的吗?
答案 0 :(得分:0)
您应该尝试使用mysql LOAD DATA INFILE命令而不是单个插入。这通常要快得多。查看文档:
http://dev.mysql.com/doc/refman/5.1/en/load-data.html
此外,如果这是一个永远不会更新或删除数据的表,您可以尝试转换表以使用归档引擎(而不是InnoDB或其他任何内容)。该引擎用于存储大量记录,并且可以非常快速地插入新记录。请查看以下内容:
http://dev.mysql.com/tech-resources/articles/storage-engine.html