这是一个多对多表,链接到表的每一个,每个表有大约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”?这可能会带来绩效改善吗?
答案 0 :(得分:0)
您可能需要按many_to_many
字段对token_id
进行索引。复合主键在这里没有帮助。