我正在尝试使用Twitter等追踪系统构建简单的社交媒体。

我有桌子

tb_follow
    id
    account1_id
    account2_id

tb_post
    id
    account_id
    created_at
    message


我有这个查询来选择我关注的用户的最新帖子。

SELECT p.message
FROM tb_post as p
JOIN tb_follow as f
ON f.account1_id = 123 and f.account2_id = p.account_id
ORDER BY p.created_at DESC, p.id DESC
LIMIT 20


可以以某种方式优化此查询吗?

我应该索引哪些列?

最佳答案

对我来说,它看起来很好,而且由于执行inner join的原因,您是否在join on子句中具有条件或在何处具有相同条件。您应该在列f.account2_idp.account_id上创建索引,因为这两个都涉及联接条件f.account2_id = p.account_id,并且在f.account1_id上也有索引,因为它们包含在过滤器f.account1_id = 123

SELECT p.message
FROM tb_post as p
JOIN tb_follow as f
ON f.account1_id = 123 and f.account2_id = p.account_id
ORDER BY p.created_at DESC, p.id DESC
LIMIT 20

关于mysql - 优化查询:选择关注者的帖子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34602695/

10-13 23:35