Ash*_*ary 5 sql redundancy join
以下联接应该为具有特定状态的用户检索用户信息及其消息:
SELECT * FROM user, message WHERE message.user_id=user.id AND user.status=1
Run Code Online (Sandbox Code Playgroud)
问题是结果集中某个用户的所有行都包含重复有关该用户的相同数据的冗余列(从用户表中检索的那些字段),只有来自消息表的字段包含非冗余信息.像这样的东西:
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
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,许多数据都是冗余的,我们不希望先找到用户,然后在循环结构或类似的东西中查看他们的消息.应不惜一切代价避免导致微查询的循环.
我不关心我的程序输出,在UI中处理得很好.我想也许通过返回此查询的结果产生的网络流量可能会大大减少,如果我能够设法消除与该用户相关的所有行中的用户数据的重复.
| 归档时间: |
|
| 查看次数: |
11226 次 |
| 最近记录: |