我致力于数据库优化,在每隔15分钟从.csv文件(约3800条记录)中插入大量内容。
为此,我将通过cron运行一个mis.sql文件。该文件包含9 (09) mysql查询,这些查询从大容量插入的表中执行重复删除、内连接插入、删除和更新(ALTER、DELETE、insert和UPDATE)。
最近,在批量插入查询之前运行的查询遇到了一个问题。查询是-
改变忽略表pb添加唯一的索引(恩,时间);
错误1069 (42000):指定的键太多;允许最多64个键
当遇到上述错误时,将跳过所有后续查询。然后,我检查了表pb,发现有64个唯一索引键与02索引键和01主键一起创建,具有相同的基数值。
当尝试删除一个唯一的索引时,它花费了太多的时间( 979,618条记录几乎需要15分钟),但最后,它并没有被删除。
这个问题有什么解决办法吗?
发布于 2015-07-13 07:20:29
第一件事:为什么会有ALTER命令呢?新的数据应该改变数据,而不是数据库设计。因此,虽然INSERT、UPDATE和DELETE是这样一个脚本中的有效选项,但ALTER不属于这些选项。把它移开。
至于删除索引:这应该只需要一小部分秒。没有什么可以建造或重建,只需移除。
DROP INDEX index_name ON tbl_name;我能想到的唯一原因是,在没有插入、更新和删除的情况下,甚至没有一个很短的时间片。因此,您可能需要暂时停止作业(或者在空文件上运行它),删除所有不必要的索引(只保留一个索引),然后重新开始作业。
https://stackoverflow.com/questions/31377315
复制相似问题