gpt4 book ai didi

mysql order by -id vs order by id desc

转载 作者:IT老高 更新时间:2023-10-29 00:03:18 28 4
gpt4 key购买 nike

我希望从 1 M 行的表中获取最后 10 行。

CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`updated_date` datetime NOT NULL,
PRIMARY KEY (`id`)
)

这样做的一种方法是 -

select * from test order by -id limit 10;

**10 rows in set (0.14 sec)**

另一种方法是 -

select * from test order by id desc limit 10;

**10 rows in set (0.00 sec)**

所以我对这些查询做了一个“解释”-

这是我使用 'order by desc' 的查询结果

EXPLAIN select * from test order by id desc limit 10;

enter image description here

这是我使用'order by -id'的查询结果

EXPLAIN select * from test order by -id limit 10;

enter image description here

我认为这将是相同的,但执行计划似乎存在差异。

最佳答案

RDBMS 使用启发式算法来计算执行计划,它们不能总是确定两个语句的语义等价性,因为这是一个太难的问题(就理论和实践的复杂性而言)。

因此 MySQL 无法使用该索引,因为您在“-id”上没有索引,这是一个应用于字段“id”的自定义函数。看似微不足道,但 RDBMS 必须最大限度地减少计算计划所需的时间,因此它们会遇到简单的问题。

当无法为查询找到优化(即使用索引)时,系统会回退到在任何情况下都有效的实现:扫描全表。

关于mysql order by -id vs order by id desc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27704947/

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