mysql-SQL多对多查询索引优化

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

  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

说明

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

解决方法:

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

编辑

根据查询执行计划,第一步优化步骤是检查表是否定义了主键,然后可以在post_status和tag_name列上设置索引.

上一篇:我应该为这个肿的查询添加哪些SQL索引?


下一篇:在使用带限制的order时避免在mysql中进行全表扫描