2012-09-09 45 views
1

我應該如何在MySql中建模這些數據?我的查詢模式的模型數據和指數?

我有一個看起來像這樣的數據:

有很多項目,其中一些共享的ItemGroup。每個ITEM都有一個0-10或20個事件的列表。每個ITEM可以處於INPROGRESS狀態或COMPLETED狀態。

我想通過兩種方式來查詢數據:

  1. 在的ItemGroup的所有項目。按需查詢。
  2. 一個ITEM由一個唯一標識符以及與之相關的所有事件 。按需查詢。
  3. 所有ITEMS INPROGRESS。至少一個小時一次。

每月輸入2,000,000個ITEMS。所以在一年之後,DB將擁有24,000,000個ITEMS。

什麼是最好的方式來建模我的數據和這些數據和這些查詢模式的指數?如果有任何問題,我應該關注這些數據和這些查詢?

回答

1

我不知道我理解你。但它是關係數據庫的簡單模式。像這樣?在Id

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' ... 

主鍵,也對所有外鍵一個指數(FK_...)。在這種情況下,外鍵索引ItemEvent.FK_Item也應該包含列ItemEvent.state