次の参加は、特定のステータスを持つユーザーのメッセージとともにユーザー情報を取得することになっています。
SELECT * FROM user, message WHERE message.user_id=user.id AND user.status=1
問題は、結果セット内の特定のユーザーに関するすべての行に、そのユーザーに関する同じデータ (ユーザー テーブルから取得されたフィールド) を繰り返す冗長な列が含まれており、メッセージ テーブルのフィールドのみに冗長でない情報が含まれていることです。このようなもの:
user.id username email message.id subject
1 jane jane@gmail.com 120 Notification
1 jane jane@gmail.com 122 Re:Hello
1 jane jane@gmail.com 125 Quotation
2 john john@yahoo.com 127 Hi jane
2 john john@yahoo.com 128 Fix thiss
2 john john@yahoo.com 129 Ok
3 jim jim@msn.com 140 Re:Re:Quotation
ご覧のとおり、多くのデータは冗長であり、最初にユーザーを見つけてから、ループのような構造などでメッセージを処理したくありません。マイクロクエリを引き起こすループは、何としても避けるべきです。
UI で適切に処理されるプログラムの出力については心配していません。このクエリの結果を返すことによって生成されるネットワーク トラフィックは、そのユーザーに関連するすべての行で何らかの方法でユーザー データの繰り返しをなくすことができれば、おそらく大幅に削減できると思います。