0

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

两个“side”表都有外键引用(一个是“tokens”,另一个是“paras”)。要找出包含给定标记的所有 paras,我需要按照以下行执行 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 索引?如果没有,如果我在查询中包含“JOIN paras ON paras.ID = many_to_many.para_id”,是否可以让它使用表“paras”的索引(在“ID”上)?这可能会导致性能提升吗?

4

1 回答 1

0

您可能需要many_to_manytoken_id字段索引。复合主键在这里没有帮助。

于 2013-02-20T19:05:40.013 回答