我正在考虑建立需要可扩展的商店解决方案。目前,它在多个国家的商店(例如UK,US,DE,DK,ES等)中每天平均每天检索1-2000个订单,但该订单在两年内可能为10倍。

我正在考虑使用单独的乡村商店数据库存储订单表,或者希望将全部组合成一个订单表。

如果所有订单都存在于一个具有全球ID(自动数字)和国家ID(例如UK,de,dk等)的表中,则每个国家 /地区也需要进行顺序排序。因此,从本质上讲,我们必须拥有一个全球ID和一个国家订单ID,而国家订单ID仅适用于国家 /地区,例如

全球ID = 1000,乡村=英国,国家订单ID = 1000
全局ID = 1001,country = de,国家订单ID = 1000
全局ID = 1002,country = de,国家订单ID = 1001
全局ID = 1003,country = de,国家订单ID = 1002
全球ID = 1004,乡村=英国,国家订单ID = 1001

全局ID将是DB生成的,而不是我需要担心的。但是我认为我必须进行查询才能获取当前的基于国家订单的ID+1才能找到下一个顺序编号。我对此有两件事:1)查询时间可能有数百万行数据,而我在写入之前进行读取,2)由于同时写入/读取而导致ID号发生冲突的可能性。

使用Myisam表,整个表可以锁定,而最后一个国家订单 + 1可以防止ID号冲突。

我想知道是否有人知道更优雅的解决方案?

欢呼,imanc

有帮助吗?

解决方案

有一种方法。

INSERT INTO test123 (`Country`, `Country order code`)
SELECT 'UK', MAX(`Country order code`) + 1
FROM test123
WHERE `Country` = 'UK'

这为英国提供了新的订单,它选择了最高级代码。这已经进行了测试,所有需要更改的就是表和字段的名称

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top