作者:手机用户2602939883 | 来源:互联网 | 2023-09-23 20:52
我有一个要优化的多对多查询,我应该为其创建什么索引?SELECT(SELECTCOUNT(post_id)FROMpostsWHEREpost_status1)ast
我有一个要优化的多对多查询,
我应该为其创建什么索引?
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列上设置索引.
标签:indexing,query-optimization,sql,mysql
来源: https://codeday.me/bug/20191202/2085707.html