0

バックグラウンド:

私は、ユーザーがクラス、学生組織、イベントの3つのエンティティを名前で一度に検索できる検索機能を開発しています。

MySQL 5.6とInnodbは、比較的小さなサーバーで使用されます。

テーブル:

探す

entity_id  (tiny_int)
entity_type  (tiny_int)
full_name   (varchar(255))

Index (Primary) -> entity_id, entity_type
Index (FULL TEXT INDEX) -> full_name

クラス(entity_type = 1)

class_id
ALL OTHER COLUMNS...

イベント(entity_type = 2)

event_id
ALL OTHER COLUMNS

組織(entity_type = 3)

org_id
ALL OTHER COLUMNS

質問:

entity_id, entity_type主キーを使用して、一見似ているが異なる3つのデータセット(クラス、イベント、組織)の名前を1つの検索テーブルにインデックス付けするのは適切ですか?

検索テーブルでテーブルを結合するにはどうすればよいClass, Events, Orgsですか?を使用して実行できる条件はありentity_typeますか?

どんな助けやガイダンスも大歓迎です。

4

1 に答える 1

1

これは、これら3つのテーブルタイプをリンクするための合理的なアプローチのようです。これは、pplが「account_type:user、admin、other」でよく行うことと、それぞれの個別の設定へのリンクに似ています。

メインテーブルと3つのサブテーブルすべての間で結合を行うかどうかは、列がどの程度類似しているかによって異なります。それらがv類似している場合は、同じクエリで3つの結合を実行しentity_type、on句の一部としてasを配置できます。それらがv異なる場合は、クエリを3つの異なる結合に分割する方が適切な場合があります。これらを結合することはできますが、それだけの価値がある場合とない場合があります。

于 2012-12-28T15:16:21.283 に答える