是一个“where in”子句,1000个部分太多了

时间:2013-09-29 03:11:40

标签: mysql database-design

如果我想为特定实体创建一个状态/消息更新页面,有没有比这更好的方法:

  1. 获取您关注/订阅的所有实体
  2. 在状态表上执行WHERE IN。
  3. 我担心的是:如果您关注1000,2000个实体怎么办?那是问题吗?什么是进行这种数据检索的最佳方式?

1 个答案:

答案 0 :(得分:1)

你的计划(可能)不是很好。一般来说,WHERE IN仅在术语数量较少且不变时才有效。

大多数WHERE IN子句可以转换为连接,这听起来没有什么不同 试试这个(猜测架构):

SEKECT s.*
FROM followed f
JOIN status s ON s.entity_id = f.entity_id
WHERE f.user_id = ?

只要您在followed(user_id)status(entity_id)

上有索引,就可以像这样编码,从而获得良好的效果