1

このデータを MySql でモデル化するにはどうすればよいですか?

次のようなデータがあります。

多くのITEMSがあり、そのうちのいくつかはITEMGROUPを共有しています。各 ITEM には、0 ~ 10 または 20 のイベントのリストがあります。各 ITEM は、INPROGRESS 状態または COMPLETED 状態のいずれかになります。

このデータを次の 2 つの方法でクエリしたいと思います。

  1. ITEMGROUP 内のすべての ITEMS。オンデマンドで照会されます。
  2. 一意の識別子による 1 つの ITEM と、それに関連付けられたすべてのイベント。オンデマンドで照会されます。
  3. すべてのアイテムが進行中です。少なくとも 1 時間に 1 回。

1 か月あたり 2,000,000 ITEMS が入力されています。したがって、1 年後に DB には 24,000,000 のアイテムが含まれます。

このデータとこれらのクエリ パターンのデータとインデックスをモデル化する最良の方法は何ですか? このデータとこれらのクエリに関して注意すべき問題がある場合、どのような問題がありますか?

4

1 に答える 1

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

于 2012-09-09T09:12:06.340 に答える