将更改列的差值插入到具有匹配列的表中的最有效方法?

时间:2013-04-07 14:59:50

标签: mysql insert unique

很难将其写成单句话题。这是前提:

我有两个像这样的结构表:

create table TableA(
id int, <-- this is a unique ID in TableA but not in TableB
value1 int,
value2 int,
value3 int,
value4 int,
value5 int,
value6 int,
update_time DATETIME
)

create table TableB(
id int,
value1 int,
value2 int,
value3 int,
value4 int,
value5 int,
value6 int,
update_time DATETIME
)

TableA有100,000行数据(API响应的最新副本)。 API每小时返回TableA中每个ID的新数据,API响应更新TableA,其中包含每个唯一ID的最新数据。所有响应都会保存到TableB以便进行数据分析(因此每小时会有100,000行添加到TableB。)。但是,并非所有数据每小时都会发生变化。事实上,大多数数据都没有变化。

以下是我想要构建它的方法: 假设API返回id = 432的数据,除了value4之外,所有值都相同,value4包含505043(而不是505000,这是当前存储在{{1}中的值} TableA)。我想取505043 - 505000 = 43并将其存储到id=432

TableB

实现这一目标的最有效方法是什么?我最初的想法是将数据从INSERT INTO TableB (id, value6) VALUES (432, 43) 检索到PHP TableA脚本中,计算数据差异(如果有的话),然后相应地构造insert语句。但由于这个过程每秒会发生这么多次,所以我想确保我使用最有效的方法。

提前致谢。

1 个答案:

答案 0 :(得分:0)

只要在TableA中插入或更新了行,就可以生成一个trigger,在TableB中插入一行。

Here is an example如何在另一个表中插入行时使用触发器将行插入表中。