好的,让我们看看你们奇才队是否可以帮助我解决这个问题。我正在猛烈抨击我。
该场景是一个非常标准的设置,带有销售点(我就是这样)以及后台跟踪仓库信息。问题是我需要在销售点将数据库与后台的当前股票信息同步。现在,这是通过Web从后台获取目录来完成的。目录包含诸如当前可用单位,当前价格和每种类型的唯一ID之类的信息。在我的数据库中,我有完全相同的信息,我在获取目录后更新它。对我来说,重要的是在它们出现时插入新的单位类型,用可用性信息和价格更新现有类型,最后在低于某个阈值时删除类型(或标记它们不可用)。
当前实现只是将所有项目标记为不可用,以防它们从目录中删除,然后对于目录中的每个项目发出如下查询:
INSERT INTO store (id, quantity, price)VALUES(x, y, z)
ON DUPLICATE KEY quantity=y, price=z;
将id设置为唯一,以避免数据库中过期的重复数据,并导致触发更新的冲突。主要问题是,这会对目录中的每种类型发出一个查询,这可能会迅速增长。
这个问题是否有更快的解决方案?
答案 0 :(得分:1)
REPLACE INTO store (id, quantity, price) VALUES (x, y, z), (x2,y2,z2);
我还建议不要将它们作为SQL(可怕的安全性)发送到webapp,并以适合您的某种格式将它们作为大批量(一次1000行)发送。 webapp执行所有REPLACE语句并返回成功。
答案 1 :(得分:0)
INSERT INTO store (id, quantity, price) VALUES (x, y, z), (x2,y2,z2)
但我不知道这与你的ON DUPLICATE KEY
陈述有何关系......
您可以执行一些逻辑将数据拆分为组以进行更新并单独插入。