我正在寻找一些关于我正在进行的设计的建议。情况就是这样:
我有一个包含会议桌和用户表的数据库。每个会议都有一个组织,它对应于用户的用户ID。此刻Verry简单。
现在通过facebook api,我得到了每个人的朋友列表。我想在我的数据库中搜索我朋友组织的会议。我想到的第一件事就是在查询中只是一个简单的IN('朋友列表'),但我可以想象这会破坏性能。
现在的想法是创建一个包含userID和friendID的额外表,并在查询中加入该表。
有人对什么表现最好有一些建议。其他解决方案当然非常受欢迎;)
THX
<磷>氮PS。 MySQL DB
答案 0 :(得分:1)
IN
这里不是一个根本问题。但如果给定的DBMS优化器不是很好并且无法产生最佳查询计划,那么它可能是一个实际问题。但在这种情况下,您通常可以重写查询以使用不同的语法(例如JOIN
)来完成相同但允许优化器生成更好的计划。
MySQL因未充分优化INs
而臭名昭着,因此默认情况下人们倾向于使用JOIN
。其他DBMS通常没有这样的限制。最好自己测试一下性能on representative amounts of data,看看你是否确实遇到了问题。