我有一个我想要优化的多对多查询, 我应该为它创建什么索引?
SELECT (SELECT COUNT(post_id)
FROM posts
WHERE post_status = 1) as total,
p.*,
GROUP_CONCAT(t.tag_name) tagged
FROM tags_relation tr
JOIN posts p ON p.post_id = tr.rel_post_id
JOIN tags t ON t.tag_id = tr.rel_tag_id
WHERE p.post_status=1
GROUP BY p.post_id
EXPLAIN
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY p ALL PRIMARY NULL NULL NULL 5 Using where; Using filesort
答案 0 :(得分:3)
您可以使用Explain
语句查看查询执行计划。这将显示是否正在进行全表扫描,或者是否能够找到检索数据的索引。从那时起,您可以进一步优化。
修改强>
根据您的查询执行计划,首先检查您的表是否已定义主键,您可以在post_status和tag_name列上设置索引。