以下加入应该为具有特定状态的用户检索用户信息及其消息:
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 中得到了很好的处理。我认为,如果我能够设法消除与该用户相关的所有行中用户数据的重复,则返回此查询结果产生的网络流量可能会大大减少。