sql多对多查询索引优化

时间:2011-11-18 05:12:36

标签: mysql sql indexing query-optimization

我有一个我想要优化的多对多查询, 我应该为它创建什么索引?

  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

1 个答案:

答案 0 :(得分:3)

您可以使用Explain语句查看查询执行计划。这将显示是否正在进行全表扫描,或者是否能够找到检索数据的索引。从那时起,您可以进一步优化。

修改

根据您的查询执行计划,首先检查您的表是否已定义主键,您可以在post_status和tag_name列上设置索引。