gpt4 book ai didi

mysql - 简单选择第n高

转载 作者:搜寻专家 更新时间:2023-10-30 20:13:43 24 4
gpt4 key购买 nike

我试图弄清楚哪种方法更有效地获取 mySQL 数据库中的第 n 个最高记录:

SELECT * 
FROM table_name
ORDER BY column_name DESC
LIMIT n - 1, 1

SELECT *
FROM table_name AS a
WHERE n - 1 = (
SELECT COUNT(primary_key_column)
FROM products b
WHERE b.column_name > a. column_name)

column_name 上有一个索引。

我认为 mySQL 会有效地执行 limit 子句,第一个选项是可行的方法。

我不太清楚第二个查询到底做了什么,所以如果第二个查询更有效,有人可以解释原因。

谢谢。

最佳答案

我在我的一个数据库上对这两个查询都尝试了 EXPLAIN(注意:优化器可能会为您的模式/数据选择不同的计划)并且看起来第一个在各个方面都赢了:它更容易阅读和理解,并且很可能会更快。

正如 aaronls 所说,并且 EXPLAIN 证实,第二个查询有一个相关的子查询,这将需要对整个表的每一行进行额外的迭代。

由于第一个更容易阅读,我会一口气选择它。如果您确实发现它是一个瓶颈(在分析您的应用程序之后),您可以尝试第二次,但我看不出它如何可能更快。

关于mysql - 简单选择第n高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/708090/

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