0

は現在、私はmysqlにこのような構造を持つpivotテーブルのカップルを持っている:インデックスを使用するか代理IDで値を置き換えて別のテーブルを追加しますか?

のuser_id | organisation_id |あなたが見ることができるように

4 3 external 
4 3 internal 
6 4 internal 
7 4 external 
6 5 external 
7 5 external 
7 6 internal 

は、私のtypeコラムで私が唯一externalinternalを使用して入力します。現在、type列はenumであり、索引付けされています。

これは良いデータベース構造ですか、それともtypeの列に別のテーブルを作成する必要がありますか?

私はこの2つのテーブルで「問題」があるので、重要な決定です。テーブルがかなり大きくなる可能性があります。

あなたはこの状況で何をしますか?

+0

「列タイプの別のテーブルを作成する」とはどういう意味ですか?説明/説明してください。あなたは、代理IDで型の値を置き換え、IDと型の値を関連付けるテーブルを持っているのですか? – philipxy

+0

@philipxyはい、それは私の言いたいことです。 – Jenssen

+0

私はすでにあなたのタイトルを改善しました。あなたの質問を編集してください。コメントは説明のためではなく、一時的なものであり、コメントを要求して解読して記事に編集するためのものです。あなたは明確で正確で完全な質問が必要です。あなたが考えていることの(該当するが)曖昧な説明/要約は、あなたが思っていることを伝えないでください。完全な付属の例も役立ちます。 – philipxy

答えて

2

これは、このテーブルに対して実行するクエリの種類によって大きく異なります。

あなたはこと、すなわち、例えば、それは内部または外部のかどうケア、または実行時に、彼らが望むものをtype決めクエリはありません、type列を無視するというクエリを実行する場合ユーザーの入力を介して、すべてを単一のテーブルに保持することに大きな利点があります。

一般に、選択性の悪い、つまりその2つのカテゴリのそれぞれの行のおよそ半分の列のインデックス付けは、フルテーブルスキャンと比較してわずかなパフォーマンス改善しかもたらさない可能性があります。テーブルを2つに分割する場合も同じです:クエリをより複雑にすることはほとんどありません。

関連する問題