mysql执行计划通过order by减少成本?

标签 mysql sql

为什么 mysql workbench 告诉我:

SELECT * FROM file_results WHERE filter2_dec > 20 LIMIT 3

成本高于:

SELECT * FROM file_results WHERE filter2_dec > 20 ORDER BY filter2_dec DESC LIMIT 3

enter image description here

enter image description here

最佳答案

这很可能是因为在查询的 order 中您已将其指定为 DESC。这更容易找到,因为数据已经排序。而在您的其他声明中,它仍然必须遍历每个条目,然后限制为前 3 个。

order by 较少,因为您在该子句之后进行了限制。数据已经排序,因此更容易显示结果。而成本更高的语句必须自己执行此操作然后进行限制。这也会受到索引、DBMS 的影响,并且在实际环境中可能会有不同的表现。

关于mysql执行计划通过order by减少成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46237588/

相关文章:

c# - 如何使用 EF Core 2.1 和 Pomelo 创建 CreatedOn 和 UpdatedOn

php - 如何通过codeigniter重定向带有数据的页面

sql - 是否有单个 SQL(或其变体)函数可以一次检查多个列的不等于?

PHP MYSQL - 插入不使用列名但使用自动增量字段

php - JOIN 中重复的 SQL 结果 - Codeigniter

php - 检查登录用户的角色(PHP)

java.lang.RuntimeException : java. sql.SQLException: 字段 'UserName' 没有默认值

php - Cron Job - 如何在特定日期的两次之间执行脚本?

mysql - devexpress特殊标志报告

java - Derby 战的直播结果