我遇到过这种情况,我需要选择大量的数据(比如看似ID | {"points":"9","votes":"2","breakdown":"0,0,0,1,1"}
的100k记录),用PHP处理它然后再把它放回去。问题是关于有效地回归它。我看到使用INSERT ... ON DUPLICATE KEY UPDATE
的解决方案,我看到UPDATE
使用CASE
的解决方案。还有其他解决方案吗?哪种更新大数据阵列最有效?
答案 0 :(得分:0)
更好的选择是使用简单的更新 当您尝试使用插入异常放置数据时,您的数据库将执行更多其他工作:尝试插入,验证约束,引发异常,更新行,再次验证约束。
<强>更新强>
在我的本地PC上运行测试以插入...对具有43k行的表的ON DUPLICATE KEY UPDATE和UPDATE语句。
第一种方法的速度提高了40% 但两者的工作速度都要快1.5秒。我想,你的PHP代码将成为你的方法的瓶颈,你不应该担心MySQL语句的速度。当然,如果你的表不是很大并且没有几十万行,它就可以工作。
更新2
我的本地PC在默认配置中使用MySQL 5.6。 CPU:8Gb