MYISAM表上插入速度慢

时间:2011-09-26 00:07:38

标签: mysql performance indexing myisam composite-key

我需要创建一个包含两个属性的表: id author 。这两个属性构成了复合键。此外,我需要在作者字段上执行索引搜索。 因此,我使用以下语句创建表:

CREATE TABLE IF NOT EXISTS authors(author VARCHAR(100)NOT NULL,id VARCHAR(200)NOT NULL,INDEX USING BTREE(author,id),PRIMARY KEY(author,id))ENGINE = MYISAM;

现在,当我尝试使用JDBC插入大约450万条记录时,插入速度最终变得非常慢。 id 属性是指由相关作者创建的出版物。一位作者与几个ID相关,反之亦然。相同id值的平均数量低于相同作者值的数量。 因此,我使用交换属性测试了相同的过程。在这种情况下,插入速度几乎保持不变。 有没有办法优化表格以获得性能? 我不太清楚MYISAM如何管理索引复合键。可能是平衡的过程就是原因......

提前致谢!

1 个答案:

答案 0 :(得分:0)

我注意到一些问题:

  • 你在同一对列(作者,id)上定义了两个索引:一个普通索引和一个主键,它也是一种特殊类型的唯一索引。
  • 索引是非常长的VARCHAR值。
  • 您的数据库不是第一个正常形式,因为正如您所说,作者可以重复,您使用完整的作者姓名来创建关系,而您应该使用id并将作者放在单独的表中。< / LI>

完成这些更改后,您的索引将采用简单的数字类型,插入速度应该很好。