在我的应用程序中,您可以订阅用户以获取他们的更新等...但是,如果您允许说订阅2000人,查询将会太大而我不知道它是否会工作/崩溃或者是正确的方式...
这是一个使用15个用户和他自己的订阅运行的查询:
SELECT * FROM updates WHERE uid='433154988124' || uid='643474995854' ||
uid='841341889862' || uid='231955782795' || uid='763438359221' ||
uid='232345661645' || uid='786313664389' || uid='311617571586' ||
uid='895988518181' || uid='576877484624' || uid='119448961897' ||
uid='963671595174' || uid='342987961447' || uid='259688255351' ||
uid='746656932975' || uid='716846928846' ORDER BY date DESC LIMIT 0, 15
那么是什么告诉我这将适用于1000多个订阅?
是走的路还是以另一种方式做得更好?
答案 0 :(得分:5)
在1000多个订阅中,这将非常缓慢。你想要做的是创建一个链接表UserSubscriptions或类似的东西。在该表中,您可以存储您的用户ID和订阅的ID。在您的查询中,您可以加入这两个表。
答案 1 :(得分:1)
对于您的具体示例,应假设以下内容
错误查询 -
SELECT * FROM updates
WHERE uid IN (
433154988124,
643474995854,
841341889862,
231955782795,
763438359221,
232345661645,
786313664389,
311617571586,
895988518181,
576877484624,
119448961897,
963671595174,
342987961447,
259688255351,
746656932975,
716846928846,
) ORDER BY date DESC LIMIT 0, 15
正如其他人所说,链接表将是一种更有效的方式,以便您可以运行这个更好的查询。
SELECT updates.*
FROM updates
INNER JOIN users_subscriptions
ON users_subscriptions.uid = updates.uid
ORDER BY updates.date DESC LIMIT 0, 15