以下查询需要56秒才能返回18行。表criteria
包含大约14,200条记录。表criteria_interests
包含42,500条记录。 criteria_languages
包含8条记录。
如果我删除了两个LEFT JOIN
,它可以快速运行。在真实的搜索查询中,使用criteria_interests
和criteria_languages
表会有条件。
对于criteria_interests
和criteria_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
的结果: