gpt4 book ai didi

mysql - 加速连接表

转载 作者:行者123 更新时间:2023-11-29 17:34:29 24 4
gpt4 key购买 nike

在连接 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 BY

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

没有问题。

最佳答案

鉴于问题缺乏详细信息,没有有关主键、唯一索引或其他索引的信息...

我们怀疑缺乏合适的索引导致执行计划效率非常低。

<小时/>

建议:

  • 添加一些适当的索引。

  • 使用EXPLAIN查看查询的执行计划。

  • 如果没有合适的索引,ORDER BY col 将需要对(据报道)大型集合执行“使用文件排序”操作。

  • 在整个结果集排序之后,LIMIT 子句几乎作为最后一步应用。

关于mysql - 加速连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50403404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com