mysql在WHERE和GROUP BY中使用索引

时间:2013-02-20 18:58:48

标签: mysql performance indexing

这是一个多对多表,链接到表的每一个,每个表有大约70000条记录。多对多有大约530万条记录。

对两个“side”表都有外键引用(一个是“标记”,另一个是“para”)。为了找出包含给定标记的所有para,我需要沿着

行做一个SELECT语句
SELECT para_id FROM many_to_many WHERE token_id = 3333 GROUP BY para_id;

尽管“token_id”列是复合主键的“最左边”列,并且para_id上有一个索引(由para_id外键使用),但这似乎运行得相当缓慢。

我尝试过使用EXPLAIN,但这似乎从未提及过使用para_id索引。我的问题是:是否有可能让MySQL使用para_id索引?如果不是,是否可以让它使用表“paras”的索引(在“ID”上),如果我在查询中包含“JOIN paras ON paras = ID = many_to_many.para_id”?这可能会带来绩效改善吗?

1 个答案:

答案 0 :(得分:0)

您可能需要按many_to_many字段对token_id进行索引。复合主键在这里没有帮助。