如何加快加载数据查询速度?

时间:2014-03-28 12:50:34

标签: mysql

我有一张包含3300万独特记录的表格。在一周内插入两次新记录。当我导入数据时,需要大约8到9小时。用于加载的新文件有600到700万条记录。我该如何优化呢? 表引擎是MYISAM。

1 个答案:

答案 0 :(得分:2)

索引=开销

任何包含唯一索引的索引在插入行(即开销)时都需要做一些额外的工作。单独考虑并不一定需要做很多工作 - 尤其是在阅读信息时通过帮助加快速度来补偿 - 但它确实会增加。

将新行插入带索引的表中时,索引中包含的每一列都必须注册到索引文件中;必须在插入前检查每个唯一约束,以确保不保存重复项。

想象一下,每插入一行必须检查一次3300万行唯一值。如果您要插入额外的100万行,这是330亿次检查。

支持PK的唯一性:

如果删除唯一性约束,则可以更快地插入行。不幸的是,如果你不能保证新导入的值是唯一的而不检查那么你需要唯一性约束。

同时删除唯一性约束意味着当您查询该表时,根据以前唯一的列来搜索特定项目过滤时,查询将会更慢(3300万行中的速度要慢得多)。

如果您可以保证它们是唯一的,或者可以保留稍后的检查(清除重复项),那么您可以使用auto_increment或UUID设置主键,然后再进行重复清理。

如果您不需要使用唯一列查询该表(如果您可以将应用程序更改为按主键查询),事情将会更快地移动。