【发布时间】:2015-03-07 07:10:45
【问题描述】:
我有一个名为 messages 的表,其中包含两列:userA 和 userB。
每个用户都有一个类型:typeA 或 typeB。
我想计算不同类型用户之间发送的消息数量的交叉表。用户也可以是 typeA 和 typeB。类型存储在不同的表中:(id:1, typeA), (id:2, typeB)
userA/userB | typeA | typeB
-----
typeA 2000 81348
-----
typeB 18348 12938
如何有效地做到这一点?假设我有 100000 条消息。如果我为 userA 执行第一个内部连接:在最坏的情况下,我会得到 7*100000 条记录。现在,如果我为 userB 执行第二个内部联接:我将获得 7*7*100000 条记录。第二个连接查询需要很长时间。
有没有更好的方法来做到这一点?
【问题讨论】:
标签: mysql join optimization