Mysql从一个表更新另一个1对1表


mysql update a table from another 1 to 1 table

我有两个表,一个是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。