gpt4 book ai didi

mysql - 如果第一列是唯一的,是否会检查 ORDER BY 的第二列?

转载 作者:行者123 更新时间:2023-11-30 22:18:09 25 4
gpt4 key购买 nike

我有这样的查询:

. . . ORDER BY col1, MAX(col2)

col1 在大多数情况下是唯一的,通常 col1 在所选行之间是不同的。我只想知道,当col1不同时,MAX(col2)会被执行吗?因为执行那个是没有用的。

让我换一种方式问我的问题:

. . . ORDER BY id, name

如您所知,id 是唯一的。在这种情况下,甚至会检查 name 吗?

最佳答案

要复杂得多。

我理解你的意思,是的,如果第一列已经是唯一的,则无需检查第二列,但从其他角度来看:

如果第一列已经是唯一的,为什么还要包括第二列?

无论如何,如果我们将排序想象成简单的迭代过程,这个逻辑是可行的,但正如 ORDER BY Optimization 中所描述的那样事实并非如此。

示例 1 - 。 . .按 col1、MAX(col2) 排序

对于这种情况,您在 SQL 的某处使用了 GROUP BY,优化指南建议如下:

By default, MySQL sorts all GROUP BY col1, col2, ... queries as if you specified ORDER BY col1, col2, ... in the query as well. If you include an explicit ORDER BY clause that contains the same column list, MySQL optimizes it away without any speed penalty, although the sorting still occurs.

示例 2 - 。 . .按 ID、名称排序

正如指南所建议的,这完全取决于您定义的索引:

In some cases, MySQL can use an index to satisfy an ORDER BY clause without doing extra sorting. The index can also be used even if the ORDER BY does not match the index exactly, as long as all unused portions of the index and all extra ORDER BY columns are constants in the WHERE clause.

要确保您的查询是如何工作的,只需使用 EXPLAIN SELECT ... ORDER BY 查看它是如何被处理的。

关于mysql - 如果第一列是唯一的,是否会检查 ORDER BY 的第二列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37534763/

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