我正在尝试使用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
可以以某种方式优化此查询吗?
我应该索引哪些列?
答案 0 :(得分:1)
对我来说,它看起来很好,你是否有条件在join on子句或者你在执行inner join
时的位置相同。您应该在列f.account2_id
和p.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{};