【问题标题】:Model data and indices for my query patterns?我的查询模式的模型数据和索引?
【发布时间】:2012-09-09 19:10:57
【问题描述】:

我应该如何在 MySql 中对这些数据建模?

我的数据如下所示:

有许多项目,其中一些共享一个 ITEMGROUP。每个项目都有一个 0-10 或 20 个事件的列表。每个项目都可以处于 INPROGRESS 状态或 COMPLETED 状态。

我想通过两种方式查询这些数据:

  1. ITEMGROUP 中的所有项目。按需查询。
  2. 由唯一标识符组成的一个项目,以及所有事件 与之相关联。按需查询。
  3. 所有项目正在进行中。至少每小时一次。

每月输入 2,000,000 个项目。因此,一年后数据库将拥有 24,000,000 个项目。

为这些数据和这些查询模式建模我的数据和索引的最佳方法是什么?我应该注意这些数据和这些查询的哪些问题?

【问题讨论】:

    标签: mysql sql data-modeling


    【解决方案1】:

    我不确定我是否理解你。但它是关系数据库的简单模式。像这样?

    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 列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 2017-08-16
      • 2015-06-14
      • 2015-06-17
      相关资源
      最近更新 更多