gpt4 book ai didi

mysql - 向 MySQL 查询添加 ORDER BY 子句使其在 ~30 秒内返回,高于 ~0.5

转载 作者:行者123 更新时间:2023-11-29 01:07:39 25 4
gpt4 key购买 nike

所以我的查询速度相对较快,约为 0.5 秒,但当我添加 ORDER BY 子句时,它会跳到将近 30 秒。

原始查询:(在约 0.5 秒内返回)

SELECT table1.*,table2.* FROM table1 LEFT OUTER JOIN table2 ON table1.column2=table2.column3 WHERE table1.column1='value' LIMIT 4

使用 ORDER BY 查询:(大约 30 秒后返回)

SELECT table1.*,table2.* FROM table1 LEFT OUTER JOIN table2 ON table1.column2=table2.column3 WHERE table1.column1='value' ORDER BY table1.column4 DESC LIMIT 4

请注意,我向 ORDER BY 使用的列添加了一个索引,但它没有任何改变。

关于导致这种情况的原因有什么想法吗?

最佳答案

这需要更长的时间,因为查询不能只选择它找到的前 4 个项目。它必须对整个列表进行排序,然后从中选择前 4 个。

通过添加一个包含 table1{column4, ...} 的索引来解决这个问题。如果您只需要表 1 中的几列(而且它们很窄),我会将它们添加到索引 ( covering index ) 中。

如果索引正确,SQL 引擎可以只提取您想要的前四列,而不是整个集合。

如果您确实有索引但没有帮助,请使用 EXPLAIN 运行查询查看执行计划的样子(好提示,@IronGoofy):

EXPLAIN 
SELECT table1.*,table2.*
FROM table1
LEFT OUTER JOIN table2 ON table1.column2=table2.column3
WHERE table1.column1='value' ORDER BY table1.column4 DESC LIMIT 4

关于mysql - 向 MySQL 查询添加 ORDER BY 子句使其在 ~30 秒内返回,高于 ~0.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/447083/

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