加入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,我已经尝试了相关的子查询,但我担心这可能需要更长时间。
问题似乎是在运行
后的ORDER BYSELECT 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
没有问题。
答案 0 :(得分:0)
鉴于问题中缺乏细节,没有关于主键,唯一或其他索引的信息......
我们怀疑缺少合适的索引导致执行计划非常低效。
建议:
添加一些适当的索引。
使用EXPLAIN
查看查询的执行计划。
如果没有合适的索引,ORDER BY col
将需要"使用filesort" (据报道)大集合的操作。
在整个结果集排序后,LIMIT子句几乎应用于最后一步。