脚本宝典收集整理的这篇文章主要介绍了php – MySQL更新连接性能,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我的问题是,有更好或更有效的方法吗?
方法1:
UPDATE table_a,table_b SET table_a.price = table_b.price WHERE table_a.product_code=table_b.product_code
方法2:
UPDATE table_a INNER JOIN table_b ON table_a.product_code = table_b.product_code SET table_a.price=table_b.price
我猜这些基本上都以相同的方式工作,但我认为连接会更有效率. product_code列是随机文本,虽然是唯一的,并且每行与另一个表中的一行匹配.
还有什么我可以尝试的吗?
谢谢
更新:通过创建索引解决了这个问题.
CREATE UNIQUE INDEX index_code on table_a (product_code) CREATE UNIQUE INDEX index_code on table_b (product_code)
您的查询如下所示:
UPDATE table_a INNER JOIN table_b ON table_a.product_code = table_b.product_code SET table_a.price=table_b.price
为了看看你可以做什么延迟
EXPLAIN SELECT a.price,b.price FROM table_b b INNER JOIN table_a a ON (a.product_code = b.product_code)
这将告诉您是否正在使用索引,请参阅the info on EXPLAIN和more info here.
在您的情况下,您没有任何索引(可能的键= null)强制MysqL进行全表扫描.
当缓慢是一个问题时,您应该始终对您的查询进行解释选择.您必须将非选择查询转换为选择,但这并不困难,只需列出select子句中的所有已更改字段,然后复制连接和where子句.
以上是脚本宝典为你收集整理的php – MySQL更新连接性能全部内容,希望文章能够帮你解决php – MySQL更新连接性能所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。