質問

レコードのタグを保存する最良の方法は何ですか? varcharフィールドを使用するだけですか?タグxを含む行を選択する場合はどうですか? like演算子を使用しますか

ありがとう!

役に立ちましたか?

解決

2つのことに依存します:
1)タグ/タグ付きレコードの量
2)正規化に関して宗教的な意見があるかどうか:-)

非常に大量のデータを処理する場合を除き、varchar値を整数識別子にマッピングする「タグ」テーブルを作成し、タグ付きレコードをタグIDにマッピングする2番目のテーブルを作成することをお勧めします。最初にこれを実装することをお勧めします。次に、パフォーマンスのニーズに合わないかどうかを確認します。その場合、タグ付き行のIDとタグの実際のテキストを含む単一のテーブルを保持しますが、この場合、オプティマイザーがテーブル全体をスキャンする場合にクエリを強制終了するため、char列を使用することをお勧めしますvarchar列を持つ大きなテーブル。

他のヒント

いいえ、通常、単一のフィールドに複数のデータを配置するのは悪い考えです。代わりに、個別のTagsテーブル(おそらくTagIDとTagNameのみ)を使用し、レコードごとに、それに関連付けられたTagIDを示します。レコードが複数のタグに関連付けられている場合、重複するレコードがあり、唯一の違いはTagIDです。

ここでの利点は、タグ、レコード、およびタグテーブルを個別に簡単にクエリできることです(つまり、タグ名が変更された場合はどうなりますか?)。

許容可能な最小の主キーを持つタグテーブルを使用します。タグが255個未満の場合は、バイト(tinyint)または単語(smallint)を使用します。キーが小さいほど、メインテーブルの外部キーのインデックスは小さく、高速になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top