优化查询:选择以下内容'帖子

时间:2016-01-05 01:08:46

标签: mysql

我正在尝试使用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

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

我应该索引哪些列?

1 个答案:

答案 0 :(得分:1)

对我来说,它看起来很好,你是否有条件在join on子句或者你在执行inner join时的位置相同。您应该在列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

T t{};