MySQL不需循环update多条记录


UPDATE 查询比较棘手,因为你不能简单地写进去多个值。不同情况下,我用不同的方法解决。如果你确信将要update的记录是存在的,那么可以使个花招,用INSERT ... ON DUPLICATE KEY UPDATE代替(没想通的在下面留言)。但是如果你并非100%确定这条记录存在,那么最好建一个临时表,插进去全部试图更新的值,然后执行一条多表update查询。

如果跑的是MariaDB,或是Percona Server,你也可以试下在HandlerSocket接口上做update。可以大幅消除由于执行多条查询带来的开销。甚至,对于每个update执行一条查询的情况一样有效。

跟往常一样,不同方法的性能差异在于数据和要做的事情。一定要在数据、服务器和应用程序上进行测试。

 

相关内容