mysql - 如何理解 SELECT 和 ORDER BY 的执行顺序
问题描述
我用谷歌搜索了这个问题,所有答案都说 SELECT 是在 ORDER BY 之前执行的。但是下面的简单示例(使用 MySQL 和 sakila 数据库)给出了正确的排序结果。显然,SELECT 之后不会执行 ORDER BY,因为 SELECT 没有选择 customer_id。谁能解释发生了什么?
SELECT rental_date FROM rental ORDER BY customer_id LIMIT 10;
解决方案
SQL 中根本没有执行顺序。
SQL 是一种声明性语言,而不是命令性语言。您正试图在 SQL 和命令式语言(如 Java、Python 或 C#)之间建立一种平行关系……但没有。
每个 SQL 引擎都可以自由地重写/改写您的查询(随意),以任何顺序执行,甚至随着时间的推移更改其策略,只要它根据约束结果集的谓词返回数据。
而已。不多也不少。
推荐阅读
- java - 我得到:selenium webdriver 项目中的分叉过程中出现错误
- php - PHP 爆炸函数行尾检测
- javascript - 如何在声明文件中使用可选依赖项中的类型?
- haskell - Do notation for monad in function return a different type
- javascript - ruby on rails 从 button_tag 调用 javascript 函数
- javafx - JavaFX ConcurrentModificationException 与 GridPane.get...Index()
- perl - 拆分不同的数字,计算出现次数并返回每个数字的百分比
- jquery - 如何对 jquery 数据表进行日期范围过滤?
- codeigniter - codeigniter,路线和语言
- django - Authenticating user problem with django-tenant-schema