【发布时间】:2023-03-17 05:27:01
【问题描述】:
我需要创建一个包含两个属性的表:id 和 author。这两个属性形成复合键。此外,我需要对 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 值的平均数量低于相同作者值的数量。 因此,我用交换的属性测试了相同的过程。在这种情况下,插入速度几乎保持不变。 有没有办法优化表以获得性能? 我不太清楚 MISAM 如何管理索引复合键。可能是平衡的过程是原因...
提前致谢!
【问题讨论】:
-
为什么主键是 (author, id) 的组合?
-
作者和 id 都不是唯一的。
-
对不起,我的意思是复合键。刚刚更正了...
标签: mysql performance indexing myisam composite-key