我在 MySql 表“temp”中有 100 万行,并希望将列“t”(int unsigned,indexed)乘以 1000。
mysql> update temp set t=1000*t;
此过程需要 25 秒。在非索引列上执行相同的语句需要 10 秒;
有什么想法可以加快这个过程吗?我必须在超过 1e5 个表上应用它。
最佳答案
您可以关闭索引并在更新完成后重新打开
ALTER TABLE tbl_name DISABLE KEYS;
ALTER TABLE tbl_name ENABLE KEYS;
或者如果你正在使用 myISAM 您可以使用 delay_key_write 标志。您可以按表设置它,或者 全局范围内。可以使用“FLUSH TABLE mytable”命令强制mysql 更新索引的磁盘副本。
http://dev.mysql.com/doc/mysql/en/create-table.html
关于mysql - mysql 更新/设置语句的速度。乘以一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/850373/