我的应用程序中有 3 个实体:user
, tag
, question
.
这些实体之间的关系:
-
user
可以选择tag
他们感兴趣的是 -
tag
可以附加到question
s
这或多或少类似于 stackoverflow
中对应实体之间的关系或quora
.
现在我正在尝试添加一个名为“最新问题”的页面,我将在其中呈现一些带有访问用户感兴趣的标签的最新问题。
如何有效地实现这一点?
假设访问用户是 userA
。
我现在能想到的解决方案是:
- 获取所有标签
userA
对某个关联表感兴趣 - 做一个
IN
针对question_tag
的查询获取相关表question_id
s - 查找
question_id
位于question
表并按time desc
对结果进行排序
所以有两个 IN
在这里查询,自数量tag
某个用户的 s 可能非常大(可能数千),恐怕这个解决方案不够快。
我正在考虑对多个标签进行编码并将结果放入 question
的列中表,有哪些好的方法可以做到这一点?
最佳答案
您需要向该列表添加一个时间戳字段,然后仅获取按带有限制的时间戳排序的列表。假设 SQL:
select question from listofquestions
order by whenitwasasked desc limit 5
关于mysql - 如何有效查询 "latest questions"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16599630/