MySql:查询优化或表的结构优化

时间:2015-06-25 12:48:08

标签: mysql sql query-optimization

我需要一些关于mysql的帮助。

让我们告诉你。我有两张桌子:nodes(250 000行):
id | name

groups(约400 000行):
id | group_id | node_id - 索引(node_id)和索引(group_id)

问题查询:
select count(*) from nodes n inner join groups g on g.node_id = n.id \ where g.group_id in (1,20, 30...);
执行时间: 0.50秒,这对我来说是个问题。

如何优化查询以计算行然后进行选择? 我可以将索引或新字段用于获益?

1 个答案:

答案 0 :(得分:0)

`SHOW CREATE TABLE` for each table

不要为id打扰多对多表格。确保索引在这样的表格中双向进行。

为什么您的问题查询需要触及nodes?这将计算每组中的节点数量,不是吗?

SELECT  group_id,
        COUNT(*)
    FROM groups
    WHERE group_id IN (...)
    GROUP BY group_id;

groupsPRIMARY KEY(group_id, node_id)INDEX(node_id, group_id)

如果这不是您要找的,请描述查询。