使用LEFT JOIN加速简单的SQL查询

时间:2013-09-28 13:29:15

标签: mysql sql join

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

如果我删除了两个LEFT JOIN,它可以快速运行。在真实的搜索查询中,使用criteria_interestscriteria_languages表会有条件。

对于criteria_interestscriteria_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 Explain Results

0 个答案:

没有答案