我有两张桌子:" news_tags"和" users_tags"。现在我想为特定新闻获得适当的用户。我的查询得到了正确的结果,但速度很慢。
到目前为止,这是我的查询:
SELECT `users_id`
FROM `users_tags`
WHERE `tags_id` IN (SELECT `tags_id` FROM `news_tags`
WHERE `news_id` = '$news_id')
GROUP BY `users_id`
ORDER BY `users_id`
有没有办法更快地完成它?
非常感谢招呼
答案 0 :(得分:3)
转换为INNER JOIN会给你一个提升。
SELECT `users_id` FROM `users_tags` u INNER JOIN news_tags t
ON u.tags_id = t.tags_id
WHERE `news_id` = '$news_id' GROUP BY `users_id` ORDER BY `users_id`
然后确保news_id
列news_tags
上的索引以及tags_id
users_tags
上的索引
实际上,users_tags(tags_id,users_id)上的复合索引可能更好。所有这些都需要在查看EXPLAIN输出后确定。