首页 > 数据库 > mysql教程 > MariaDB 对子查询中 ORDER BY 的处理发生了怎样的变化,推荐的解决方案是什么?

MariaDB 对子查询中 ORDER BY 的处理发生了怎样的变化,推荐的解决方案是什么?

Linda Hamilton
发布: 2024-12-31 15:38:16
原创
744 人浏览过

How Has MariaDB's Handling of ORDER BY in Subqueries Changed, and What's the Recommended Solution?

MySQL/MariaDB 查询优化更改:子查询中的 Order By

使用 MySQL 5.5 或更早版本进行查询时,应用了子查询的 ORDER BY 子句在最外层查询的 SELECT 之前。然而,在 MariaDB 10.0.14 中,这种行为已经改变,当不存在 LIMIT 时,子查询 ORDER BY 子句现在将被忽略。

为了解决这个问题,MariaDB 建议将 ORDER BY 子句应用于最外层查询或使用子查询中的 LIMIT。

已记录行为

MariaDB 的文档指出,FROM 子句中的子查询是无序的行集,在此上下文中通常会忽略 ORDER BY 子句。以下文档中的引用提供了更多详细信息:

“根据 SQL 标准,“表”(以及 FROM 子句中的子查询)是一组无序的行。表中的行(或在 FROM 子句中的子查询中)不以任何特定顺序出现,这就是优化器可以忽略您指定的 ORDER BY 子句的原因。事实上,SQL 标准甚至不允许 ORDER BY 子句出现。这个子查询(我们允许它,因为 ORDER BY ... LIMIT ... 改变结果、行集,而不仅仅是它们的顺序)。”

因此,建议将子查询视为无序集并在最外层查询中放置 ORDER BY 子句或根据需要使用 LIMIT。

以上是MariaDB 对子查询中 ORDER BY 的处理发生了怎样的变化,推荐的解决方案是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板