MySQL を使用してプロジェクトのタグのような構造を設計しようとしています。
このhttp://forge.mysql.com/wiki/TagSchemaを読んだ後、m2mテーブルの設計には非常に多くjoin
のものが必要なため、大きなデータではパフォーマンスが確実に低下するため、非常に失望しました。
私が念頭に置いているのは、各タグに と があるタグ テーブルですname
。id
次に、タグ付けしたい項目テーブルで、各項目には という列がありtag
、各タグはそのビット インデックスを 1 としてマークし、それ以外の場合はビット フィールドは 0 です。
例えば
table: tag
id name
1 tag1
2 tag2
3 tag3
table: item
id name tag (in binary) tag (in array)
1 item1 00000001 [tag1]
2 item2 00000100 [tag3]
3 item3 00000110 [tag2, tag3]
item
したがって、特定のタグでを検索したい場合は、必要なタグ&
でバイナリ タグ フィールドを検索するだけですid
。
私のデザインは良いアイデアですか、それとも悪いアイデアですか?
タグ ビットセット フィールドでインデックスを使用して検索を高速化できますか?
MySQL が #2 を実行できない場合、私の最善の選択肢は何ですか (NoSQL 以外に)
前もって感謝します!