0

userscommentsの2 つのテーブルがあります。

パフォーマンスの観点から、(ユーザー ID を使用して) 結合を使用してユーザーテーブルからユーザー名を取得するか、列のユーザー名をコメントに追加する必要があるため、1 つのデータ (ユーザー名) のみを結合する必要はありませんが、コメント (ユーザー名) ごとにもう 1 つのデータを追加する必要があります。

テーブルにたくさんのコメントがある場合、結合は遅くなりますか?

どれをすればいいですか?列のユーザー名をコメントに結合または追加します。

ありがとうございました。

4

5 に答える 5

3

Join がおそらく最適なので、データを 2 つの場所に保存することはありません。ユーザー名が変更された場合はどうなりますか? コメントのユーザー名は変更されません。また、2 つのテーブルを結合するのにそれほど時間はかかりません。

于 2012-05-15T18:57:00.330 に答える
1

ユーザー数とコメント数によって異なります。あなたが求めている非正規化されたデータベースを持つことはより高速になる可能性がありますが、両方のテーブルでユーザー名を更新するように注意する必要があります。参加する場合は、コメント テーブルにユーザー ID のインデックスを追加することを忘れないでください。したがって、私が信じる正しい答えは、結合を使用し、必要に応じて後で非正規化することです。

于 2012-05-15T18:58:46.333 に答える
0

個人的には、2つの単純な個別のクエリを使用したいと思います。参加するのはあまり好きではありません。結合は、定義上、重複したデータを生成するだけです。http://www.notorm.com/を確認することをお勧めします。これは、単純なphpdbアクセスレイヤーが結合なしで実行されます。

于 2012-05-15T19:34:56.580 に答える
0

InnoDB を使用している場合は、列を追加して外部キー制限を追加できます。これにより、効率が向上し、インデックスの更新に関する心配が減ります。

于 2012-05-15T19:00:09.907 に答える
0

ユーザー名をコメント テーブルに格納する理由の 1 つは、コメントが作成されたときのユーザー名を知りたい場合です。その後、ユーザー名が変更された場合、コメントの時点での名前が引き続き使用されます。

ただし、一般的には join を使用します。テーブルの主キーを、おそらく自動インクリメント (ID) 整数値として定義したいと考えています。

1 人のユーザーのすべてのコメントを取得する際のパフォーマンスが気になる場合は、コメント テーブルのユーザー ID フィールドにインデックスを作成する必要があります。

于 2012-05-15T19:11:19.137 に答える