在连接3个表时,我在连接前两个表时获得了结果:
SELECT so.id, so.title, so.cat, sr.img
FROM extended_details AS so
JOIN details AS sr ON so.id = sr.id
LIMIT 6
当我尝试加入第三个表时,问题来了,就像这样:
SELECT so.id, so.title, so.cat, sr.img
FROM extended_details AS so
JOIN details AS sr ON so.id = sr.id
JOIN scores AS se ON sr.id = se.id
ORDER BY score_sec DESC
LIMIT 6
这似乎要花很长时间,我从来没有得到我的结果,每个表有大约300k ID,我尝试过相关子查询,但我担心这可能需要更长的时间。
自从运行以来,问题似乎已经解决了
SELECT so.id, so.title, so.cat, sr.img, se.score
FROM extended_details AS so
JOIN details AS sr ON so.id
JOIN scores AS se ON se.id = sr.id
LIMIT 6
没有问题。
1条答案
按热度按时间oxiaedzo1#
由于问题缺乏细节,没有关于主键、唯一索引或其他索引的信息。。。
我们怀疑缺乏合适的索引会导致执行计划非常低效。
建议:
添加一些适当的索引。
使用
EXPLAIN
查看查询的执行计划。如果没有合适的索引
ORDER BY col
需要对一个(据说)大的集合执行“using filesort”操作。limit子句几乎是在对整个resultset排序之后的最后一步应用的。