1

以下查询需要 56 秒才能返回 18 行。该表criteria包含大约 14,200 条记录。该表criteria_interests包含 42,500 条记录。criteria_languages包含 8 条记录。

如果我删除两个LEFT JOINs,它会很快工作。在真正的搜索查询中,会有使用criteria_interestsandcriteria_languages表的条件。

对于criteria_interestsandcriteria_languages表,除了主键之外,我不能有任何索引,因为该cid字段不是唯一的。任何人都可以看到如何加快速度?

SELECT criteria.id, criteria.uid
FROM   user_profile
       INNER JOIN criteria
               ON ( criteria.id = user_profile.cid )
       LEFT JOIN criteria_interests
              ON ( criteria_interests.cid = user_profile.cid )
       LEFT JOIN criteria_languages
              ON ( criteria_languages.cid = user_profile.cid )
GROUP  BY criteria.id
LIMIT  0, 18 

以下是结果EXPLAIN

MySQL 解释结果

4

0 回答 0