我有两个表,一个是product,一个是product_data
product是主表,product_data是详细表,但在id列上有1对1的关系
我想在product表
中更新product_data中的一些数据这是我使用的查询:
update product p
inner join product_data pp on p.catid=5 and p.id = pp.id
set p.minp = pp.minp, p.maxp = pp.maxp, p.stores = pp.stores
它工作得很好,但是当有数百万条记录时…它运行非常慢,需要花费很多时间
有没有更优化的方法来实现这个…?
我可以使用php代码来优化它,所以方法不一定是mysql特定的。
Thanks in advance
使用连接更新表应该已经是更新数据的最快方式了。
确保你有这些索引
-
product_data(id)
-
product(catid, id)
您可以通过添加覆盖索引来更快地获得它:
-
product_data(id, minp, maxp, stores)
在表之间以1:1的关系复制值可能违反了规范化。将记录保留在产品数据文件中,并使用VIEW。