Mysql 如何加快我的加载数据查询

Mysql 如何加快我的加载数据查询,mysql,Mysql,我有一张有3300万张独特记录的桌子。一周内插入两次新记录。导入数据大约需要8到9小时。用于加载的新文件有600万到700万条记录。我如何优化它? 表引擎是MYISAM。索引=开销 任何包含唯一索引的索引都是插入行时需要做的额外工作(也称为开销)。单独考虑时,不一定要做很多工作,尤其是在阅读信息时,通过帮助加快速度来进行补偿,但是,这确实是一种累加 将新行插入具有索引的表时,索引中包含的每一列都必须注册到索引文件中;插入前必须检查每个唯一约束,以确保不保存重复项 想象一下,必须为每个插入的行检查

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

索引=开销 任何包含唯一索引的索引都是插入行时需要做的额外工作(也称为开销)。单独考虑时,不一定要做很多工作,尤其是在阅读信息时,通过帮助加快速度来进行补偿,但是,这确实是一种累加

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

想象一下,必须为每个插入的行检查3300万行的唯一值。如果你要额外插入一百万行,那就是330亿张支票

放弃唯一性以支持PK: 如果删除唯一性约束,则可以更快地插入行。不幸的是,如果没有检查就不能保证新导入的值是唯一的,那么就需要唯一性约束

此外,删除唯一性约束意味着,当您查询该表时,根据以前唯一的列搜索特定项筛选时,查询速度会变慢(在3300万行中要慢得多)

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


如果您不需要使用唯一列查询该表(如果您可以将应用程序更改为按主键查询),则运行速度会快得多。

请告诉我们包含任何索引的表定义。表有两列,Mob\u no varchar(12)主键,Trndate varchar(20).在中使用索引database@haseeb非冲突索引减慢了数据库“插入”。它们只会加速数据库的“读取”和“更新”(因为更新显然需要簧片)。。。最后2分钟我帮了忙:8小时缩短到76分钟,3天缩短到30分钟。这不是一个糟糕的答案,先生。希望OP今天能为您提供10公里的奖励