我应该如何在 MySql 中对这些数据建模?
我有这样的数据:
有很多 ITEMS,其中一些共享一个 ITEMGROUP。每个 ITEM 都有一个 0-10 或 20 个事件的列表。每个 ITEM 可以处于 INPROGRESS 状态或 COMPLETED 状态。
我想通过两种方式查询这些数据:
- ITEMGROUP 中的所有 ITEMS。按需查询。
- 一个具有唯一标识符的 ITEM,以及所有事件 与之相关。按需查询。
- 所有项目都在进行中。至少每小时一次。
每月输入 2,000,000 件商品。因此,一年后数据库将拥有 24,000,000 个 ITEMS。
为这些数据和这些查询模式建模我的数据和索引的最佳方法是什么?对于这些数据和这些查询,我应该注意哪些问题?
最佳答案
我不确定我是否理解你。但它是关系数据库的简单模式。是这样的吗?
Table: Item (Id, ...)
Table: ItemGroup (Id, FK_Item, ...)
Table: ItemEvent (Id, FK_Item, ...)
SELECT Item.*
FROM Item JOIN ItemGroup ON Item.Id = ItemGroup.FK_Item
WHERE ItemGroup.Id = ? ...
SELECT ItemEvent.*
FROM Item JOIN ItemEvent ON Item.Id = ItemEvent.FK_Item
WHERE Item.Id = ? ...
SELECT Item.*
FROM Item JOIN ItemEvent ON Item.Id = ItemEvent.FK_Item
WHERE ItemEvent.state = 'INPROGRESS' ...
Id
上的主键以及所有外键上的索引 (FK_...
)。在这种情况下,外键索引 ItemEvent.FK_Item
还应包含列 ItemEvent.state
。
关于mysql - 我的查询模式的模型数据和索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337279/